(0) Obligation:

Clauses:

mergesort([], []).
mergesort(.(E, []), .(E, [])).
mergesort(.(E, .(F, U)), V) :- ','(split(U, L2, L1), ','(mergesort(.(E, L2), X), ','(mergesort(.(F, L1), Z), merge(X, Z, V)))).
merge(X, [], X).
merge([], X, X).
merge(.(A, X), .(B, Y), .(A, Z)) :- ','(le(A, B), merge(X, .(B, Y), Z)).
merge(.(A, X), .(B, Y), .(B, Z)) :- ','(gt(A, B), merge(.(A, X), Y, Z)).
split([], [], []).
split(.(E, U), .(E, V), W) :- split(U, W, V).
gt(s(X), s(Y)) :- gt(X, Y).
gt(s(X), 0).
le(s(X), s(Y)) :- le(X, Y).
le(0, s(Y)).
le(0, 0).

Query: mergesort(g,a)

(1) PrologToDTProblemTransformerProof (SOUND transformation)

Built DT problem from termination graph DT10.

(2) Obligation:

Triples:

mergeB(.(X1, X2), .(X3, X4), .(X1, X5)) :- leC(X1, X3).
mergeB(.(X1, X2), .(X3, X4), .(X1, X5)) :- ','(lecC(X1, X3), mergeB(X2, .(X3, X4), X5)).
mergeB(.(X1, X2), .(X3, X4), .(X3, X5)) :- gtD(X1, X3).
mergeB(.(X1, X2), .(X3, X4), .(X3, X5)) :- ','(gtcD(X1, X3), mergeB(.(X1, X2), X4, X5)).
leC(s(X1), s(X2)) :- leC(X1, X2).
gtD(s(X1), s(X2)) :- gtD(X1, X2).
splitE(.(X1, X2), .(X1, X3), X4) :- splitE(X2, X4, X3).
mergesortF(.(X1, .(X2, [])), X3) :- mergesortA(X1, X4).
mergesortF(.(X1, .(X2, [])), X3) :- ','(mergesortcA(X1, X4), mergesortA(X2, X5)).
mergesortF(.(X1, .(X2, [])), X3) :- ','(mergesortcA(X1, X4), ','(mergesortcA(X2, X5), mergeB(X4, X5, X3))).
mergesortF(.(X1, .(X2, .(X3, X4))), X5) :- splitE(X4, X6, X7).
mergesortF(.(X1, .(X2, .(X3, X4))), X5) :- ','(splitcE(X4, X6, X7), mergesortF(.(X1, .(X3, X7)), X8)).
mergesortF(.(X1, .(X2, .(X3, X4))), X5) :- ','(splitcE(X4, X6, X7), ','(mergesortcF(.(X1, .(X3, X7)), X8), mergesortF(.(X2, X6), X9))).
mergesortF(.(X1, .(X2, .(X3, X4))), X5) :- ','(splitcE(X4, X6, X7), ','(mergesortcF(.(X1, .(X3, X7)), X8), ','(mergesortcF(.(X2, X6), X9), mergeB(X8, X9, X5)))).

Clauses:

mergesortcA(X1, .(X1, [])).
mergecB(X1, [], X1).
mergecB([], X1, X1).
mergecB(.(X1, X2), .(X3, X4), .(X1, X5)) :- ','(lecC(X1, X3), mergecB(X2, .(X3, X4), X5)).
mergecB(.(X1, X2), .(X3, X4), .(X3, X5)) :- ','(gtcD(X1, X3), mergecB(.(X1, X2), X4, X5)).
lecC(s(X1), s(X2)) :- lecC(X1, X2).
lecC(0, s(X1)).
lecC(0, 0).
gtcD(s(X1), s(X2)) :- gtcD(X1, X2).
gtcD(s(X1), 0).
splitcE([], [], []).
splitcE(.(X1, X2), .(X1, X3), X4) :- splitcE(X2, X4, X3).
mergesortcF([], []).
mergesortcF(.(X1, []), .(X1, [])).
mergesortcF(.(X1, .(X2, [])), X3) :- ','(mergesortcA(X1, X4), ','(mergesortcA(X2, X5), mergecB(X4, X5, X3))).
mergesortcF(.(X1, .(X2, .(X3, X4))), X5) :- ','(splitcE(X4, X6, X7), ','(mergesortcF(.(X1, .(X3, X7)), X8), ','(mergesortcF(.(X2, X6), X9), mergecB(X8, X9, X5)))).

Afs:

mergesortF(x1, x2)  =  mergesortF(x1)

(3) UndefinedPredicateInTriplesTransformerProof (SOUND transformation)

Deleted triples and predicates having undefined goals [DT09].

(4) Obligation:

Triples:

mergeB(.(X1, X2), .(X3, X4), .(X1, X5)) :- leC(X1, X3).
mergeB(.(X1, X2), .(X3, X4), .(X1, X5)) :- ','(lecC(X1, X3), mergeB(X2, .(X3, X4), X5)).
mergeB(.(X1, X2), .(X3, X4), .(X3, X5)) :- gtD(X1, X3).
mergeB(.(X1, X2), .(X3, X4), .(X3, X5)) :- ','(gtcD(X1, X3), mergeB(.(X1, X2), X4, X5)).
leC(s(X1), s(X2)) :- leC(X1, X2).
gtD(s(X1), s(X2)) :- gtD(X1, X2).
splitE(.(X1, X2), .(X1, X3), X4) :- splitE(X2, X4, X3).
mergesortF(.(X1, .(X2, [])), X3) :- ','(mergesortcA(X1, X4), ','(mergesortcA(X2, X5), mergeB(X4, X5, X3))).
mergesortF(.(X1, .(X2, .(X3, X4))), X5) :- splitE(X4, X6, X7).
mergesortF(.(X1, .(X2, .(X3, X4))), X5) :- ','(splitcE(X4, X6, X7), mergesortF(.(X1, .(X3, X7)), X8)).
mergesortF(.(X1, .(X2, .(X3, X4))), X5) :- ','(splitcE(X4, X6, X7), ','(mergesortcF(.(X1, .(X3, X7)), X8), mergesortF(.(X2, X6), X9))).
mergesortF(.(X1, .(X2, .(X3, X4))), X5) :- ','(splitcE(X4, X6, X7), ','(mergesortcF(.(X1, .(X3, X7)), X8), ','(mergesortcF(.(X2, X6), X9), mergeB(X8, X9, X5)))).

Clauses:

mergesortcA(X1, .(X1, [])).
mergecB(X1, [], X1).
mergecB([], X1, X1).
mergecB(.(X1, X2), .(X3, X4), .(X1, X5)) :- ','(lecC(X1, X3), mergecB(X2, .(X3, X4), X5)).
mergecB(.(X1, X2), .(X3, X4), .(X3, X5)) :- ','(gtcD(X1, X3), mergecB(.(X1, X2), X4, X5)).
lecC(s(X1), s(X2)) :- lecC(X1, X2).
lecC(0, s(X1)).
lecC(0, 0).
gtcD(s(X1), s(X2)) :- gtcD(X1, X2).
gtcD(s(X1), 0).
splitcE([], [], []).
splitcE(.(X1, X2), .(X1, X3), X4) :- splitcE(X2, X4, X3).
mergesortcF([], []).
mergesortcF(.(X1, []), .(X1, [])).
mergesortcF(.(X1, .(X2, [])), X3) :- ','(mergesortcA(X1, X4), ','(mergesortcA(X2, X5), mergecB(X4, X5, X3))).
mergesortcF(.(X1, .(X2, .(X3, X4))), X5) :- ','(splitcE(X4, X6, X7), ','(mergesortcF(.(X1, .(X3, X7)), X8), ','(mergesortcF(.(X2, X6), X9), mergecB(X8, X9, X5)))).

Afs:

mergesortF(x1, x2)  =  mergesortF(x1)

(5) TriplesToPiDPProof (SOUND transformation)

We use the technique of [DT09]. With regard to the inferred argument filtering the predicates were used in the following modes:
mergesortF_in: (b,f)
mergeB_in: (b,b,f)
leC_in: (b,b)
lecC_in: (b,b)
gtD_in: (b,b)
gtcD_in: (b,b)
splitE_in: (b,f,f)
splitcE_in: (b,f,f)
mergesortcF_in: (b,f)
mergecB_in: (b,b,f)
Transforming TRIPLES into the following Term Rewriting System:
Pi DP problem:
The TRS P consists of the following rules:

MERGESORTF_IN_GA(.(X1, .(X2, [])), X3) → U10_GA(X1, X2, X3, mergesortcA_in_ga(X1, X4))
U10_GA(X1, X2, X3, mergesortcA_out_ga(X1, X4)) → U11_GA(X1, X2, X3, X4, mergesortcA_in_ga(X2, X5))
U11_GA(X1, X2, X3, X4, mergesortcA_out_ga(X2, X5)) → U12_GA(X1, X2, X3, mergeB_in_gga(X4, X5, X3))
U11_GA(X1, X2, X3, X4, mergesortcA_out_ga(X2, X5)) → MERGEB_IN_GGA(X4, X5, X3)
MERGEB_IN_GGA(.(X1, X2), .(X3, X4), .(X1, X5)) → U1_GGA(X1, X2, X3, X4, X5, leC_in_gg(X1, X3))
MERGEB_IN_GGA(.(X1, X2), .(X3, X4), .(X1, X5)) → LEC_IN_GG(X1, X3)
LEC_IN_GG(s(X1), s(X2)) → U7_GG(X1, X2, leC_in_gg(X1, X2))
LEC_IN_GG(s(X1), s(X2)) → LEC_IN_GG(X1, X2)
MERGEB_IN_GGA(.(X1, X2), .(X3, X4), .(X1, X5)) → U2_GGA(X1, X2, X3, X4, X5, lecC_in_gg(X1, X3))
U2_GGA(X1, X2, X3, X4, X5, lecC_out_gg(X1, X3)) → U3_GGA(X1, X2, X3, X4, X5, mergeB_in_gga(X2, .(X3, X4), X5))
U2_GGA(X1, X2, X3, X4, X5, lecC_out_gg(X1, X3)) → MERGEB_IN_GGA(X2, .(X3, X4), X5)
MERGEB_IN_GGA(.(X1, X2), .(X3, X4), .(X3, X5)) → U4_GGA(X1, X2, X3, X4, X5, gtD_in_gg(X1, X3))
MERGEB_IN_GGA(.(X1, X2), .(X3, X4), .(X3, X5)) → GTD_IN_GG(X1, X3)
GTD_IN_GG(s(X1), s(X2)) → U8_GG(X1, X2, gtD_in_gg(X1, X2))
GTD_IN_GG(s(X1), s(X2)) → GTD_IN_GG(X1, X2)
MERGEB_IN_GGA(.(X1, X2), .(X3, X4), .(X3, X5)) → U5_GGA(X1, X2, X3, X4, X5, gtcD_in_gg(X1, X3))
U5_GGA(X1, X2, X3, X4, X5, gtcD_out_gg(X1, X3)) → U6_GGA(X1, X2, X3, X4, X5, mergeB_in_gga(.(X1, X2), X4, X5))
U5_GGA(X1, X2, X3, X4, X5, gtcD_out_gg(X1, X3)) → MERGEB_IN_GGA(.(X1, X2), X4, X5)
MERGESORTF_IN_GA(.(X1, .(X2, .(X3, X4))), X5) → U13_GA(X1, X2, X3, X4, X5, splitE_in_gaa(X4, X6, X7))
MERGESORTF_IN_GA(.(X1, .(X2, .(X3, X4))), X5) → SPLITE_IN_GAA(X4, X6, X7)
SPLITE_IN_GAA(.(X1, X2), .(X1, X3), X4) → U9_GAA(X1, X2, X3, X4, splitE_in_gaa(X2, X4, X3))
SPLITE_IN_GAA(.(X1, X2), .(X1, X3), X4) → SPLITE_IN_GAA(X2, X4, X3)
MERGESORTF_IN_GA(.(X1, .(X2, .(X3, X4))), X5) → U14_GA(X1, X2, X3, X4, X5, splitcE_in_gaa(X4, X6, X7))
U14_GA(X1, X2, X3, X4, X5, splitcE_out_gaa(X4, X6, X7)) → U15_GA(X1, X2, X3, X4, X5, mergesortF_in_ga(.(X1, .(X3, X7)), X8))
U14_GA(X1, X2, X3, X4, X5, splitcE_out_gaa(X4, X6, X7)) → MERGESORTF_IN_GA(.(X1, .(X3, X7)), X8)
U14_GA(X1, X2, X3, X4, X5, splitcE_out_gaa(X4, X6, X7)) → U16_GA(X1, X2, X3, X4, X5, X6, mergesortcF_in_ga(.(X1, .(X3, X7)), X8))
U16_GA(X1, X2, X3, X4, X5, X6, mergesortcF_out_ga(.(X1, .(X3, X7)), X8)) → U17_GA(X1, X2, X3, X4, X5, mergesortF_in_ga(.(X2, X6), X9))
U16_GA(X1, X2, X3, X4, X5, X6, mergesortcF_out_ga(.(X1, .(X3, X7)), X8)) → MERGESORTF_IN_GA(.(X2, X6), X9)
U16_GA(X1, X2, X3, X4, X5, X6, mergesortcF_out_ga(.(X1, .(X3, X7)), X8)) → U18_GA(X1, X2, X3, X4, X5, X8, mergesortcF_in_ga(.(X2, X6), X9))
U18_GA(X1, X2, X3, X4, X5, X8, mergesortcF_out_ga(.(X2, X6), X9)) → U19_GA(X1, X2, X3, X4, X5, mergeB_in_gga(X8, X9, X5))
U18_GA(X1, X2, X3, X4, X5, X8, mergesortcF_out_ga(.(X2, X6), X9)) → MERGEB_IN_GGA(X8, X9, X5)

The TRS R consists of the following rules:

mergesortcA_in_ga(X1, .(X1, [])) → mergesortcA_out_ga(X1, .(X1, []))
lecC_in_gg(s(X1), s(X2)) → U25_gg(X1, X2, lecC_in_gg(X1, X2))
lecC_in_gg(0, s(X1)) → lecC_out_gg(0, s(X1))
lecC_in_gg(0, 0) → lecC_out_gg(0, 0)
U25_gg(X1, X2, lecC_out_gg(X1, X2)) → lecC_out_gg(s(X1), s(X2))
gtcD_in_gg(s(X1), s(X2)) → U26_gg(X1, X2, gtcD_in_gg(X1, X2))
gtcD_in_gg(s(X1), 0) → gtcD_out_gg(s(X1), 0)
U26_gg(X1, X2, gtcD_out_gg(X1, X2)) → gtcD_out_gg(s(X1), s(X2))
splitcE_in_gaa([], [], []) → splitcE_out_gaa([], [], [])
splitcE_in_gaa(.(X1, X2), .(X1, X3), X4) → U27_gaa(X1, X2, X3, X4, splitcE_in_gaa(X2, X4, X3))
U27_gaa(X1, X2, X3, X4, splitcE_out_gaa(X2, X4, X3)) → splitcE_out_gaa(.(X1, X2), .(X1, X3), X4)
mergesortcF_in_ga([], []) → mergesortcF_out_ga([], [])
mergesortcF_in_ga(.(X1, []), .(X1, [])) → mergesortcF_out_ga(.(X1, []), .(X1, []))
mergesortcF_in_ga(.(X1, .(X2, [])), X3) → U28_ga(X1, X2, X3, mergesortcA_in_ga(X1, X4))
U28_ga(X1, X2, X3, mergesortcA_out_ga(X1, X4)) → U29_ga(X1, X2, X3, X4, mergesortcA_in_ga(X2, X5))
U29_ga(X1, X2, X3, X4, mergesortcA_out_ga(X2, X5)) → U30_ga(X1, X2, X3, mergecB_in_gga(X4, X5, X3))
mergecB_in_gga(X1, [], X1) → mergecB_out_gga(X1, [], X1)
mergecB_in_gga([], X1, X1) → mergecB_out_gga([], X1, X1)
mergecB_in_gga(.(X1, X2), .(X3, X4), .(X1, X5)) → U21_gga(X1, X2, X3, X4, X5, lecC_in_gg(X1, X3))
U21_gga(X1, X2, X3, X4, X5, lecC_out_gg(X1, X3)) → U22_gga(X1, X2, X3, X4, X5, mergecB_in_gga(X2, .(X3, X4), X5))
mergecB_in_gga(.(X1, X2), .(X3, X4), .(X3, X5)) → U23_gga(X1, X2, X3, X4, X5, gtcD_in_gg(X1, X3))
U23_gga(X1, X2, X3, X4, X5, gtcD_out_gg(X1, X3)) → U24_gga(X1, X2, X3, X4, X5, mergecB_in_gga(.(X1, X2), X4, X5))
U24_gga(X1, X2, X3, X4, X5, mergecB_out_gga(.(X1, X2), X4, X5)) → mergecB_out_gga(.(X1, X2), .(X3, X4), .(X3, X5))
U22_gga(X1, X2, X3, X4, X5, mergecB_out_gga(X2, .(X3, X4), X5)) → mergecB_out_gga(.(X1, X2), .(X3, X4), .(X1, X5))
U30_ga(X1, X2, X3, mergecB_out_gga(X4, X5, X3)) → mergesortcF_out_ga(.(X1, .(X2, [])), X3)
mergesortcF_in_ga(.(X1, .(X2, .(X3, X4))), X5) → U31_ga(X1, X2, X3, X4, X5, splitcE_in_gaa(X4, X6, X7))
U31_ga(X1, X2, X3, X4, X5, splitcE_out_gaa(X4, X6, X7)) → U32_ga(X1, X2, X3, X4, X5, X6, mergesortcF_in_ga(.(X1, .(X3, X7)), X8))
U32_ga(X1, X2, X3, X4, X5, X6, mergesortcF_out_ga(.(X1, .(X3, X7)), X8)) → U33_ga(X1, X2, X3, X4, X5, X8, mergesortcF_in_ga(.(X2, X6), X9))
U33_ga(X1, X2, X3, X4, X5, X8, mergesortcF_out_ga(.(X2, X6), X9)) → U34_ga(X1, X2, X3, X4, X5, mergecB_in_gga(X8, X9, X5))
U34_ga(X1, X2, X3, X4, X5, mergecB_out_gga(X8, X9, X5)) → mergesortcF_out_ga(.(X1, .(X2, .(X3, X4))), X5)

The argument filtering Pi contains the following mapping:
mergesortF_in_ga(x1, x2)  =  mergesortF_in_ga(x1)
.(x1, x2)  =  .(x1, x2)
[]  =  []
mergesortcA_in_ga(x1, x2)  =  mergesortcA_in_ga(x1)
mergesortcA_out_ga(x1, x2)  =  mergesortcA_out_ga(x1, x2)
mergeB_in_gga(x1, x2, x3)  =  mergeB_in_gga(x1, x2)
leC_in_gg(x1, x2)  =  leC_in_gg(x1, x2)
s(x1)  =  s(x1)
lecC_in_gg(x1, x2)  =  lecC_in_gg(x1, x2)
U25_gg(x1, x2, x3)  =  U25_gg(x1, x2, x3)
0  =  0
lecC_out_gg(x1, x2)  =  lecC_out_gg(x1, x2)
gtD_in_gg(x1, x2)  =  gtD_in_gg(x1, x2)
gtcD_in_gg(x1, x2)  =  gtcD_in_gg(x1, x2)
U26_gg(x1, x2, x3)  =  U26_gg(x1, x2, x3)
gtcD_out_gg(x1, x2)  =  gtcD_out_gg(x1, x2)
splitE_in_gaa(x1, x2, x3)  =  splitE_in_gaa(x1)
splitcE_in_gaa(x1, x2, x3)  =  splitcE_in_gaa(x1)
splitcE_out_gaa(x1, x2, x3)  =  splitcE_out_gaa(x1, x2, x3)
U27_gaa(x1, x2, x3, x4, x5)  =  U27_gaa(x1, x2, x5)
mergesortcF_in_ga(x1, x2)  =  mergesortcF_in_ga(x1)
mergesortcF_out_ga(x1, x2)  =  mergesortcF_out_ga(x1, x2)
U28_ga(x1, x2, x3, x4)  =  U28_ga(x1, x2, x4)
U29_ga(x1, x2, x3, x4, x5)  =  U29_ga(x1, x2, x4, x5)
U30_ga(x1, x2, x3, x4)  =  U30_ga(x1, x2, x4)
mergecB_in_gga(x1, x2, x3)  =  mergecB_in_gga(x1, x2)
mergecB_out_gga(x1, x2, x3)  =  mergecB_out_gga(x1, x2, x3)
U21_gga(x1, x2, x3, x4, x5, x6)  =  U21_gga(x1, x2, x3, x4, x6)
U22_gga(x1, x2, x3, x4, x5, x6)  =  U22_gga(x1, x2, x3, x4, x6)
U23_gga(x1, x2, x3, x4, x5, x6)  =  U23_gga(x1, x2, x3, x4, x6)
U24_gga(x1, x2, x3, x4, x5, x6)  =  U24_gga(x1, x2, x3, x4, x6)
U31_ga(x1, x2, x3, x4, x5, x6)  =  U31_ga(x1, x2, x3, x4, x6)
U32_ga(x1, x2, x3, x4, x5, x6, x7)  =  U32_ga(x1, x2, x3, x4, x6, x7)
U33_ga(x1, x2, x3, x4, x5, x6, x7)  =  U33_ga(x1, x2, x3, x4, x6, x7)
U34_ga(x1, x2, x3, x4, x5, x6)  =  U34_ga(x1, x2, x3, x4, x6)
MERGESORTF_IN_GA(x1, x2)  =  MERGESORTF_IN_GA(x1)
U10_GA(x1, x2, x3, x4)  =  U10_GA(x1, x2, x4)
U11_GA(x1, x2, x3, x4, x5)  =  U11_GA(x1, x2, x4, x5)
U12_GA(x1, x2, x3, x4)  =  U12_GA(x1, x2, x4)
MERGEB_IN_GGA(x1, x2, x3)  =  MERGEB_IN_GGA(x1, x2)
U1_GGA(x1, x2, x3, x4, x5, x6)  =  U1_GGA(x1, x2, x3, x4, x6)
LEC_IN_GG(x1, x2)  =  LEC_IN_GG(x1, x2)
U7_GG(x1, x2, x3)  =  U7_GG(x1, x2, x3)
U2_GGA(x1, x2, x3, x4, x5, x6)  =  U2_GGA(x1, x2, x3, x4, x6)
U3_GGA(x1, x2, x3, x4, x5, x6)  =  U3_GGA(x1, x2, x3, x4, x6)
U4_GGA(x1, x2, x3, x4, x5, x6)  =  U4_GGA(x1, x2, x3, x4, x6)
GTD_IN_GG(x1, x2)  =  GTD_IN_GG(x1, x2)
U8_GG(x1, x2, x3)  =  U8_GG(x1, x2, x3)
U5_GGA(x1, x2, x3, x4, x5, x6)  =  U5_GGA(x1, x2, x3, x4, x6)
U6_GGA(x1, x2, x3, x4, x5, x6)  =  U6_GGA(x1, x2, x3, x4, x6)
U13_GA(x1, x2, x3, x4, x5, x6)  =  U13_GA(x1, x2, x3, x4, x6)
SPLITE_IN_GAA(x1, x2, x3)  =  SPLITE_IN_GAA(x1)
U9_GAA(x1, x2, x3, x4, x5)  =  U9_GAA(x1, x2, x5)
U14_GA(x1, x2, x3, x4, x5, x6)  =  U14_GA(x1, x2, x3, x4, x6)
U15_GA(x1, x2, x3, x4, x5, x6)  =  U15_GA(x1, x2, x3, x4, x6)
U16_GA(x1, x2, x3, x4, x5, x6, x7)  =  U16_GA(x1, x2, x3, x4, x6, x7)
U17_GA(x1, x2, x3, x4, x5, x6)  =  U17_GA(x1, x2, x3, x4, x6)
U18_GA(x1, x2, x3, x4, x5, x6, x7)  =  U18_GA(x1, x2, x3, x4, x6, x7)
U19_GA(x1, x2, x3, x4, x5, x6)  =  U19_GA(x1, x2, x3, x4, x6)

We have to consider all (P,R,Pi)-chains

Infinitary Constructor Rewriting Termination of PiDP implies Termination of TRIPLES

(6) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

MERGESORTF_IN_GA(.(X1, .(X2, [])), X3) → U10_GA(X1, X2, X3, mergesortcA_in_ga(X1, X4))
U10_GA(X1, X2, X3, mergesortcA_out_ga(X1, X4)) → U11_GA(X1, X2, X3, X4, mergesortcA_in_ga(X2, X5))
U11_GA(X1, X2, X3, X4, mergesortcA_out_ga(X2, X5)) → U12_GA(X1, X2, X3, mergeB_in_gga(X4, X5, X3))
U11_GA(X1, X2, X3, X4, mergesortcA_out_ga(X2, X5)) → MERGEB_IN_GGA(X4, X5, X3)
MERGEB_IN_GGA(.(X1, X2), .(X3, X4), .(X1, X5)) → U1_GGA(X1, X2, X3, X4, X5, leC_in_gg(X1, X3))
MERGEB_IN_GGA(.(X1, X2), .(X3, X4), .(X1, X5)) → LEC_IN_GG(X1, X3)
LEC_IN_GG(s(X1), s(X2)) → U7_GG(X1, X2, leC_in_gg(X1, X2))
LEC_IN_GG(s(X1), s(X2)) → LEC_IN_GG(X1, X2)
MERGEB_IN_GGA(.(X1, X2), .(X3, X4), .(X1, X5)) → U2_GGA(X1, X2, X3, X4, X5, lecC_in_gg(X1, X3))
U2_GGA(X1, X2, X3, X4, X5, lecC_out_gg(X1, X3)) → U3_GGA(X1, X2, X3, X4, X5, mergeB_in_gga(X2, .(X3, X4), X5))
U2_GGA(X1, X2, X3, X4, X5, lecC_out_gg(X1, X3)) → MERGEB_IN_GGA(X2, .(X3, X4), X5)
MERGEB_IN_GGA(.(X1, X2), .(X3, X4), .(X3, X5)) → U4_GGA(X1, X2, X3, X4, X5, gtD_in_gg(X1, X3))
MERGEB_IN_GGA(.(X1, X2), .(X3, X4), .(X3, X5)) → GTD_IN_GG(X1, X3)
GTD_IN_GG(s(X1), s(X2)) → U8_GG(X1, X2, gtD_in_gg(X1, X2))
GTD_IN_GG(s(X1), s(X2)) → GTD_IN_GG(X1, X2)
MERGEB_IN_GGA(.(X1, X2), .(X3, X4), .(X3, X5)) → U5_GGA(X1, X2, X3, X4, X5, gtcD_in_gg(X1, X3))
U5_GGA(X1, X2, X3, X4, X5, gtcD_out_gg(X1, X3)) → U6_GGA(X1, X2, X3, X4, X5, mergeB_in_gga(.(X1, X2), X4, X5))
U5_GGA(X1, X2, X3, X4, X5, gtcD_out_gg(X1, X3)) → MERGEB_IN_GGA(.(X1, X2), X4, X5)
MERGESORTF_IN_GA(.(X1, .(X2, .(X3, X4))), X5) → U13_GA(X1, X2, X3, X4, X5, splitE_in_gaa(X4, X6, X7))
MERGESORTF_IN_GA(.(X1, .(X2, .(X3, X4))), X5) → SPLITE_IN_GAA(X4, X6, X7)
SPLITE_IN_GAA(.(X1, X2), .(X1, X3), X4) → U9_GAA(X1, X2, X3, X4, splitE_in_gaa(X2, X4, X3))
SPLITE_IN_GAA(.(X1, X2), .(X1, X3), X4) → SPLITE_IN_GAA(X2, X4, X3)
MERGESORTF_IN_GA(.(X1, .(X2, .(X3, X4))), X5) → U14_GA(X1, X2, X3, X4, X5, splitcE_in_gaa(X4, X6, X7))
U14_GA(X1, X2, X3, X4, X5, splitcE_out_gaa(X4, X6, X7)) → U15_GA(X1, X2, X3, X4, X5, mergesortF_in_ga(.(X1, .(X3, X7)), X8))
U14_GA(X1, X2, X3, X4, X5, splitcE_out_gaa(X4, X6, X7)) → MERGESORTF_IN_GA(.(X1, .(X3, X7)), X8)
U14_GA(X1, X2, X3, X4, X5, splitcE_out_gaa(X4, X6, X7)) → U16_GA(X1, X2, X3, X4, X5, X6, mergesortcF_in_ga(.(X1, .(X3, X7)), X8))
U16_GA(X1, X2, X3, X4, X5, X6, mergesortcF_out_ga(.(X1, .(X3, X7)), X8)) → U17_GA(X1, X2, X3, X4, X5, mergesortF_in_ga(.(X2, X6), X9))
U16_GA(X1, X2, X3, X4, X5, X6, mergesortcF_out_ga(.(X1, .(X3, X7)), X8)) → MERGESORTF_IN_GA(.(X2, X6), X9)
U16_GA(X1, X2, X3, X4, X5, X6, mergesortcF_out_ga(.(X1, .(X3, X7)), X8)) → U18_GA(X1, X2, X3, X4, X5, X8, mergesortcF_in_ga(.(X2, X6), X9))
U18_GA(X1, X2, X3, X4, X5, X8, mergesortcF_out_ga(.(X2, X6), X9)) → U19_GA(X1, X2, X3, X4, X5, mergeB_in_gga(X8, X9, X5))
U18_GA(X1, X2, X3, X4, X5, X8, mergesortcF_out_ga(.(X2, X6), X9)) → MERGEB_IN_GGA(X8, X9, X5)

The TRS R consists of the following rules:

mergesortcA_in_ga(X1, .(X1, [])) → mergesortcA_out_ga(X1, .(X1, []))
lecC_in_gg(s(X1), s(X2)) → U25_gg(X1, X2, lecC_in_gg(X1, X2))
lecC_in_gg(0, s(X1)) → lecC_out_gg(0, s(X1))
lecC_in_gg(0, 0) → lecC_out_gg(0, 0)
U25_gg(X1, X2, lecC_out_gg(X1, X2)) → lecC_out_gg(s(X1), s(X2))
gtcD_in_gg(s(X1), s(X2)) → U26_gg(X1, X2, gtcD_in_gg(X1, X2))
gtcD_in_gg(s(X1), 0) → gtcD_out_gg(s(X1), 0)
U26_gg(X1, X2, gtcD_out_gg(X1, X2)) → gtcD_out_gg(s(X1), s(X2))
splitcE_in_gaa([], [], []) → splitcE_out_gaa([], [], [])
splitcE_in_gaa(.(X1, X2), .(X1, X3), X4) → U27_gaa(X1, X2, X3, X4, splitcE_in_gaa(X2, X4, X3))
U27_gaa(X1, X2, X3, X4, splitcE_out_gaa(X2, X4, X3)) → splitcE_out_gaa(.(X1, X2), .(X1, X3), X4)
mergesortcF_in_ga([], []) → mergesortcF_out_ga([], [])
mergesortcF_in_ga(.(X1, []), .(X1, [])) → mergesortcF_out_ga(.(X1, []), .(X1, []))
mergesortcF_in_ga(.(X1, .(X2, [])), X3) → U28_ga(X1, X2, X3, mergesortcA_in_ga(X1, X4))
U28_ga(X1, X2, X3, mergesortcA_out_ga(X1, X4)) → U29_ga(X1, X2, X3, X4, mergesortcA_in_ga(X2, X5))
U29_ga(X1, X2, X3, X4, mergesortcA_out_ga(X2, X5)) → U30_ga(X1, X2, X3, mergecB_in_gga(X4, X5, X3))
mergecB_in_gga(X1, [], X1) → mergecB_out_gga(X1, [], X1)
mergecB_in_gga([], X1, X1) → mergecB_out_gga([], X1, X1)
mergecB_in_gga(.(X1, X2), .(X3, X4), .(X1, X5)) → U21_gga(X1, X2, X3, X4, X5, lecC_in_gg(X1, X3))
U21_gga(X1, X2, X3, X4, X5, lecC_out_gg(X1, X3)) → U22_gga(X1, X2, X3, X4, X5, mergecB_in_gga(X2, .(X3, X4), X5))
mergecB_in_gga(.(X1, X2), .(X3, X4), .(X3, X5)) → U23_gga(X1, X2, X3, X4, X5, gtcD_in_gg(X1, X3))
U23_gga(X1, X2, X3, X4, X5, gtcD_out_gg(X1, X3)) → U24_gga(X1, X2, X3, X4, X5, mergecB_in_gga(.(X1, X2), X4, X5))
U24_gga(X1, X2, X3, X4, X5, mergecB_out_gga(.(X1, X2), X4, X5)) → mergecB_out_gga(.(X1, X2), .(X3, X4), .(X3, X5))
U22_gga(X1, X2, X3, X4, X5, mergecB_out_gga(X2, .(X3, X4), X5)) → mergecB_out_gga(.(X1, X2), .(X3, X4), .(X1, X5))
U30_ga(X1, X2, X3, mergecB_out_gga(X4, X5, X3)) → mergesortcF_out_ga(.(X1, .(X2, [])), X3)
mergesortcF_in_ga(.(X1, .(X2, .(X3, X4))), X5) → U31_ga(X1, X2, X3, X4, X5, splitcE_in_gaa(X4, X6, X7))
U31_ga(X1, X2, X3, X4, X5, splitcE_out_gaa(X4, X6, X7)) → U32_ga(X1, X2, X3, X4, X5, X6, mergesortcF_in_ga(.(X1, .(X3, X7)), X8))
U32_ga(X1, X2, X3, X4, X5, X6, mergesortcF_out_ga(.(X1, .(X3, X7)), X8)) → U33_ga(X1, X2, X3, X4, X5, X8, mergesortcF_in_ga(.(X2, X6), X9))
U33_ga(X1, X2, X3, X4, X5, X8, mergesortcF_out_ga(.(X2, X6), X9)) → U34_ga(X1, X2, X3, X4, X5, mergecB_in_gga(X8, X9, X5))
U34_ga(X1, X2, X3, X4, X5, mergecB_out_gga(X8, X9, X5)) → mergesortcF_out_ga(.(X1, .(X2, .(X3, X4))), X5)

The argument filtering Pi contains the following mapping:
mergesortF_in_ga(x1, x2)  =  mergesortF_in_ga(x1)
.(x1, x2)  =  .(x1, x2)
[]  =  []
mergesortcA_in_ga(x1, x2)  =  mergesortcA_in_ga(x1)
mergesortcA_out_ga(x1, x2)  =  mergesortcA_out_ga(x1, x2)
mergeB_in_gga(x1, x2, x3)  =  mergeB_in_gga(x1, x2)
leC_in_gg(x1, x2)  =  leC_in_gg(x1, x2)
s(x1)  =  s(x1)
lecC_in_gg(x1, x2)  =  lecC_in_gg(x1, x2)
U25_gg(x1, x2, x3)  =  U25_gg(x1, x2, x3)
0  =  0
lecC_out_gg(x1, x2)  =  lecC_out_gg(x1, x2)
gtD_in_gg(x1, x2)  =  gtD_in_gg(x1, x2)
gtcD_in_gg(x1, x2)  =  gtcD_in_gg(x1, x2)
U26_gg(x1, x2, x3)  =  U26_gg(x1, x2, x3)
gtcD_out_gg(x1, x2)  =  gtcD_out_gg(x1, x2)
splitE_in_gaa(x1, x2, x3)  =  splitE_in_gaa(x1)
splitcE_in_gaa(x1, x2, x3)  =  splitcE_in_gaa(x1)
splitcE_out_gaa(x1, x2, x3)  =  splitcE_out_gaa(x1, x2, x3)
U27_gaa(x1, x2, x3, x4, x5)  =  U27_gaa(x1, x2, x5)
mergesortcF_in_ga(x1, x2)  =  mergesortcF_in_ga(x1)
mergesortcF_out_ga(x1, x2)  =  mergesortcF_out_ga(x1, x2)
U28_ga(x1, x2, x3, x4)  =  U28_ga(x1, x2, x4)
U29_ga(x1, x2, x3, x4, x5)  =  U29_ga(x1, x2, x4, x5)
U30_ga(x1, x2, x3, x4)  =  U30_ga(x1, x2, x4)
mergecB_in_gga(x1, x2, x3)  =  mergecB_in_gga(x1, x2)
mergecB_out_gga(x1, x2, x3)  =  mergecB_out_gga(x1, x2, x3)
U21_gga(x1, x2, x3, x4, x5, x6)  =  U21_gga(x1, x2, x3, x4, x6)
U22_gga(x1, x2, x3, x4, x5, x6)  =  U22_gga(x1, x2, x3, x4, x6)
U23_gga(x1, x2, x3, x4, x5, x6)  =  U23_gga(x1, x2, x3, x4, x6)
U24_gga(x1, x2, x3, x4, x5, x6)  =  U24_gga(x1, x2, x3, x4, x6)
U31_ga(x1, x2, x3, x4, x5, x6)  =  U31_ga(x1, x2, x3, x4, x6)
U32_ga(x1, x2, x3, x4, x5, x6, x7)  =  U32_ga(x1, x2, x3, x4, x6, x7)
U33_ga(x1, x2, x3, x4, x5, x6, x7)  =  U33_ga(x1, x2, x3, x4, x6, x7)
U34_ga(x1, x2, x3, x4, x5, x6)  =  U34_ga(x1, x2, x3, x4, x6)
MERGESORTF_IN_GA(x1, x2)  =  MERGESORTF_IN_GA(x1)
U10_GA(x1, x2, x3, x4)  =  U10_GA(x1, x2, x4)
U11_GA(x1, x2, x3, x4, x5)  =  U11_GA(x1, x2, x4, x5)
U12_GA(x1, x2, x3, x4)  =  U12_GA(x1, x2, x4)
MERGEB_IN_GGA(x1, x2, x3)  =  MERGEB_IN_GGA(x1, x2)
U1_GGA(x1, x2, x3, x4, x5, x6)  =  U1_GGA(x1, x2, x3, x4, x6)
LEC_IN_GG(x1, x2)  =  LEC_IN_GG(x1, x2)
U7_GG(x1, x2, x3)  =  U7_GG(x1, x2, x3)
U2_GGA(x1, x2, x3, x4, x5, x6)  =  U2_GGA(x1, x2, x3, x4, x6)
U3_GGA(x1, x2, x3, x4, x5, x6)  =  U3_GGA(x1, x2, x3, x4, x6)
U4_GGA(x1, x2, x3, x4, x5, x6)  =  U4_GGA(x1, x2, x3, x4, x6)
GTD_IN_GG(x1, x2)  =  GTD_IN_GG(x1, x2)
U8_GG(x1, x2, x3)  =  U8_GG(x1, x2, x3)
U5_GGA(x1, x2, x3, x4, x5, x6)  =  U5_GGA(x1, x2, x3, x4, x6)
U6_GGA(x1, x2, x3, x4, x5, x6)  =  U6_GGA(x1, x2, x3, x4, x6)
U13_GA(x1, x2, x3, x4, x5, x6)  =  U13_GA(x1, x2, x3, x4, x6)
SPLITE_IN_GAA(x1, x2, x3)  =  SPLITE_IN_GAA(x1)
U9_GAA(x1, x2, x3, x4, x5)  =  U9_GAA(x1, x2, x5)
U14_GA(x1, x2, x3, x4, x5, x6)  =  U14_GA(x1, x2, x3, x4, x6)
U15_GA(x1, x2, x3, x4, x5, x6)  =  U15_GA(x1, x2, x3, x4, x6)
U16_GA(x1, x2, x3, x4, x5, x6, x7)  =  U16_GA(x1, x2, x3, x4, x6, x7)
U17_GA(x1, x2, x3, x4, x5, x6)  =  U17_GA(x1, x2, x3, x4, x6)
U18_GA(x1, x2, x3, x4, x5, x6, x7)  =  U18_GA(x1, x2, x3, x4, x6, x7)
U19_GA(x1, x2, x3, x4, x5, x6)  =  U19_GA(x1, x2, x3, x4, x6)

We have to consider all (P,R,Pi)-chains

(7) DependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LOPSTR] contains 5 SCCs with 20 less nodes.

(8) Complex Obligation (AND)

(9) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

SPLITE_IN_GAA(.(X1, X2), .(X1, X3), X4) → SPLITE_IN_GAA(X2, X4, X3)

The TRS R consists of the following rules:

mergesortcA_in_ga(X1, .(X1, [])) → mergesortcA_out_ga(X1, .(X1, []))
lecC_in_gg(s(X1), s(X2)) → U25_gg(X1, X2, lecC_in_gg(X1, X2))
lecC_in_gg(0, s(X1)) → lecC_out_gg(0, s(X1))
lecC_in_gg(0, 0) → lecC_out_gg(0, 0)
U25_gg(X1, X2, lecC_out_gg(X1, X2)) → lecC_out_gg(s(X1), s(X2))
gtcD_in_gg(s(X1), s(X2)) → U26_gg(X1, X2, gtcD_in_gg(X1, X2))
gtcD_in_gg(s(X1), 0) → gtcD_out_gg(s(X1), 0)
U26_gg(X1, X2, gtcD_out_gg(X1, X2)) → gtcD_out_gg(s(X1), s(X2))
splitcE_in_gaa([], [], []) → splitcE_out_gaa([], [], [])
splitcE_in_gaa(.(X1, X2), .(X1, X3), X4) → U27_gaa(X1, X2, X3, X4, splitcE_in_gaa(X2, X4, X3))
U27_gaa(X1, X2, X3, X4, splitcE_out_gaa(X2, X4, X3)) → splitcE_out_gaa(.(X1, X2), .(X1, X3), X4)
mergesortcF_in_ga([], []) → mergesortcF_out_ga([], [])
mergesortcF_in_ga(.(X1, []), .(X1, [])) → mergesortcF_out_ga(.(X1, []), .(X1, []))
mergesortcF_in_ga(.(X1, .(X2, [])), X3) → U28_ga(X1, X2, X3, mergesortcA_in_ga(X1, X4))
U28_ga(X1, X2, X3, mergesortcA_out_ga(X1, X4)) → U29_ga(X1, X2, X3, X4, mergesortcA_in_ga(X2, X5))
U29_ga(X1, X2, X3, X4, mergesortcA_out_ga(X2, X5)) → U30_ga(X1, X2, X3, mergecB_in_gga(X4, X5, X3))
mergecB_in_gga(X1, [], X1) → mergecB_out_gga(X1, [], X1)
mergecB_in_gga([], X1, X1) → mergecB_out_gga([], X1, X1)
mergecB_in_gga(.(X1, X2), .(X3, X4), .(X1, X5)) → U21_gga(X1, X2, X3, X4, X5, lecC_in_gg(X1, X3))
U21_gga(X1, X2, X3, X4, X5, lecC_out_gg(X1, X3)) → U22_gga(X1, X2, X3, X4, X5, mergecB_in_gga(X2, .(X3, X4), X5))
mergecB_in_gga(.(X1, X2), .(X3, X4), .(X3, X5)) → U23_gga(X1, X2, X3, X4, X5, gtcD_in_gg(X1, X3))
U23_gga(X1, X2, X3, X4, X5, gtcD_out_gg(X1, X3)) → U24_gga(X1, X2, X3, X4, X5, mergecB_in_gga(.(X1, X2), X4, X5))
U24_gga(X1, X2, X3, X4, X5, mergecB_out_gga(.(X1, X2), X4, X5)) → mergecB_out_gga(.(X1, X2), .(X3, X4), .(X3, X5))
U22_gga(X1, X2, X3, X4, X5, mergecB_out_gga(X2, .(X3, X4), X5)) → mergecB_out_gga(.(X1, X2), .(X3, X4), .(X1, X5))
U30_ga(X1, X2, X3, mergecB_out_gga(X4, X5, X3)) → mergesortcF_out_ga(.(X1, .(X2, [])), X3)
mergesortcF_in_ga(.(X1, .(X2, .(X3, X4))), X5) → U31_ga(X1, X2, X3, X4, X5, splitcE_in_gaa(X4, X6, X7))
U31_ga(X1, X2, X3, X4, X5, splitcE_out_gaa(X4, X6, X7)) → U32_ga(X1, X2, X3, X4, X5, X6, mergesortcF_in_ga(.(X1, .(X3, X7)), X8))
U32_ga(X1, X2, X3, X4, X5, X6, mergesortcF_out_ga(.(X1, .(X3, X7)), X8)) → U33_ga(X1, X2, X3, X4, X5, X8, mergesortcF_in_ga(.(X2, X6), X9))
U33_ga(X1, X2, X3, X4, X5, X8, mergesortcF_out_ga(.(X2, X6), X9)) → U34_ga(X1, X2, X3, X4, X5, mergecB_in_gga(X8, X9, X5))
U34_ga(X1, X2, X3, X4, X5, mergecB_out_gga(X8, X9, X5)) → mergesortcF_out_ga(.(X1, .(X2, .(X3, X4))), X5)

The argument filtering Pi contains the following mapping:
.(x1, x2)  =  .(x1, x2)
[]  =  []
mergesortcA_in_ga(x1, x2)  =  mergesortcA_in_ga(x1)
mergesortcA_out_ga(x1, x2)  =  mergesortcA_out_ga(x1, x2)
s(x1)  =  s(x1)
lecC_in_gg(x1, x2)  =  lecC_in_gg(x1, x2)
U25_gg(x1, x2, x3)  =  U25_gg(x1, x2, x3)
0  =  0
lecC_out_gg(x1, x2)  =  lecC_out_gg(x1, x2)
gtcD_in_gg(x1, x2)  =  gtcD_in_gg(x1, x2)
U26_gg(x1, x2, x3)  =  U26_gg(x1, x2, x3)
gtcD_out_gg(x1, x2)  =  gtcD_out_gg(x1, x2)
splitcE_in_gaa(x1, x2, x3)  =  splitcE_in_gaa(x1)
splitcE_out_gaa(x1, x2, x3)  =  splitcE_out_gaa(x1, x2, x3)
U27_gaa(x1, x2, x3, x4, x5)  =  U27_gaa(x1, x2, x5)
mergesortcF_in_ga(x1, x2)  =  mergesortcF_in_ga(x1)
mergesortcF_out_ga(x1, x2)  =  mergesortcF_out_ga(x1, x2)
U28_ga(x1, x2, x3, x4)  =  U28_ga(x1, x2, x4)
U29_ga(x1, x2, x3, x4, x5)  =  U29_ga(x1, x2, x4, x5)
U30_ga(x1, x2, x3, x4)  =  U30_ga(x1, x2, x4)
mergecB_in_gga(x1, x2, x3)  =  mergecB_in_gga(x1, x2)
mergecB_out_gga(x1, x2, x3)  =  mergecB_out_gga(x1, x2, x3)
U21_gga(x1, x2, x3, x4, x5, x6)  =  U21_gga(x1, x2, x3, x4, x6)
U22_gga(x1, x2, x3, x4, x5, x6)  =  U22_gga(x1, x2, x3, x4, x6)
U23_gga(x1, x2, x3, x4, x5, x6)  =  U23_gga(x1, x2, x3, x4, x6)
U24_gga(x1, x2, x3, x4, x5, x6)  =  U24_gga(x1, x2, x3, x4, x6)
U31_ga(x1, x2, x3, x4, x5, x6)  =  U31_ga(x1, x2, x3, x4, x6)
U32_ga(x1, x2, x3, x4, x5, x6, x7)  =  U32_ga(x1, x2, x3, x4, x6, x7)
U33_ga(x1, x2, x3, x4, x5, x6, x7)  =  U33_ga(x1, x2, x3, x4, x6, x7)
U34_ga(x1, x2, x3, x4, x5, x6)  =  U34_ga(x1, x2, x3, x4, x6)
SPLITE_IN_GAA(x1, x2, x3)  =  SPLITE_IN_GAA(x1)

We have to consider all (P,R,Pi)-chains

(10) UsableRulesProof (EQUIVALENT transformation)

For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R.

(11) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

SPLITE_IN_GAA(.(X1, X2), .(X1, X3), X4) → SPLITE_IN_GAA(X2, X4, X3)

R is empty.
The argument filtering Pi contains the following mapping:
.(x1, x2)  =  .(x1, x2)
SPLITE_IN_GAA(x1, x2, x3)  =  SPLITE_IN_GAA(x1)

We have to consider all (P,R,Pi)-chains

(12) PiDPToQDPProof (SOUND transformation)

Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi.

(13) Obligation:

Q DP problem:
The TRS P consists of the following rules:

SPLITE_IN_GAA(.(X1, X2)) → SPLITE_IN_GAA(X2)

R is empty.
Q is empty.
We have to consider all (P,Q,R)-chains.

(14) QDPSizeChangeProof (EQUIVALENT transformation)

By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:

  • SPLITE_IN_GAA(.(X1, X2)) → SPLITE_IN_GAA(X2)
    The graph contains the following edges 1 > 1

(15) YES

(16) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

GTD_IN_GG(s(X1), s(X2)) → GTD_IN_GG(X1, X2)

The TRS R consists of the following rules:

mergesortcA_in_ga(X1, .(X1, [])) → mergesortcA_out_ga(X1, .(X1, []))
lecC_in_gg(s(X1), s(X2)) → U25_gg(X1, X2, lecC_in_gg(X1, X2))
lecC_in_gg(0, s(X1)) → lecC_out_gg(0, s(X1))
lecC_in_gg(0, 0) → lecC_out_gg(0, 0)
U25_gg(X1, X2, lecC_out_gg(X1, X2)) → lecC_out_gg(s(X1), s(X2))
gtcD_in_gg(s(X1), s(X2)) → U26_gg(X1, X2, gtcD_in_gg(X1, X2))
gtcD_in_gg(s(X1), 0) → gtcD_out_gg(s(X1), 0)
U26_gg(X1, X2, gtcD_out_gg(X1, X2)) → gtcD_out_gg(s(X1), s(X2))
splitcE_in_gaa([], [], []) → splitcE_out_gaa([], [], [])
splitcE_in_gaa(.(X1, X2), .(X1, X3), X4) → U27_gaa(X1, X2, X3, X4, splitcE_in_gaa(X2, X4, X3))
U27_gaa(X1, X2, X3, X4, splitcE_out_gaa(X2, X4, X3)) → splitcE_out_gaa(.(X1, X2), .(X1, X3), X4)
mergesortcF_in_ga([], []) → mergesortcF_out_ga([], [])
mergesortcF_in_ga(.(X1, []), .(X1, [])) → mergesortcF_out_ga(.(X1, []), .(X1, []))
mergesortcF_in_ga(.(X1, .(X2, [])), X3) → U28_ga(X1, X2, X3, mergesortcA_in_ga(X1, X4))
U28_ga(X1, X2, X3, mergesortcA_out_ga(X1, X4)) → U29_ga(X1, X2, X3, X4, mergesortcA_in_ga(X2, X5))
U29_ga(X1, X2, X3, X4, mergesortcA_out_ga(X2, X5)) → U30_ga(X1, X2, X3, mergecB_in_gga(X4, X5, X3))
mergecB_in_gga(X1, [], X1) → mergecB_out_gga(X1, [], X1)
mergecB_in_gga([], X1, X1) → mergecB_out_gga([], X1, X1)
mergecB_in_gga(.(X1, X2), .(X3, X4), .(X1, X5)) → U21_gga(X1, X2, X3, X4, X5, lecC_in_gg(X1, X3))
U21_gga(X1, X2, X3, X4, X5, lecC_out_gg(X1, X3)) → U22_gga(X1, X2, X3, X4, X5, mergecB_in_gga(X2, .(X3, X4), X5))
mergecB_in_gga(.(X1, X2), .(X3, X4), .(X3, X5)) → U23_gga(X1, X2, X3, X4, X5, gtcD_in_gg(X1, X3))
U23_gga(X1, X2, X3, X4, X5, gtcD_out_gg(X1, X3)) → U24_gga(X1, X2, X3, X4, X5, mergecB_in_gga(.(X1, X2), X4, X5))
U24_gga(X1, X2, X3, X4, X5, mergecB_out_gga(.(X1, X2), X4, X5)) → mergecB_out_gga(.(X1, X2), .(X3, X4), .(X3, X5))
U22_gga(X1, X2, X3, X4, X5, mergecB_out_gga(X2, .(X3, X4), X5)) → mergecB_out_gga(.(X1, X2), .(X3, X4), .(X1, X5))
U30_ga(X1, X2, X3, mergecB_out_gga(X4, X5, X3)) → mergesortcF_out_ga(.(X1, .(X2, [])), X3)
mergesortcF_in_ga(.(X1, .(X2, .(X3, X4))), X5) → U31_ga(X1, X2, X3, X4, X5, splitcE_in_gaa(X4, X6, X7))
U31_ga(X1, X2, X3, X4, X5, splitcE_out_gaa(X4, X6, X7)) → U32_ga(X1, X2, X3, X4, X5, X6, mergesortcF_in_ga(.(X1, .(X3, X7)), X8))
U32_ga(X1, X2, X3, X4, X5, X6, mergesortcF_out_ga(.(X1, .(X3, X7)), X8)) → U33_ga(X1, X2, X3, X4, X5, X8, mergesortcF_in_ga(.(X2, X6), X9))
U33_ga(X1, X2, X3, X4, X5, X8, mergesortcF_out_ga(.(X2, X6), X9)) → U34_ga(X1, X2, X3, X4, X5, mergecB_in_gga(X8, X9, X5))
U34_ga(X1, X2, X3, X4, X5, mergecB_out_gga(X8, X9, X5)) → mergesortcF_out_ga(.(X1, .(X2, .(X3, X4))), X5)

The argument filtering Pi contains the following mapping:
.(x1, x2)  =  .(x1, x2)
[]  =  []
mergesortcA_in_ga(x1, x2)  =  mergesortcA_in_ga(x1)
mergesortcA_out_ga(x1, x2)  =  mergesortcA_out_ga(x1, x2)
s(x1)  =  s(x1)
lecC_in_gg(x1, x2)  =  lecC_in_gg(x1, x2)
U25_gg(x1, x2, x3)  =  U25_gg(x1, x2, x3)
0  =  0
lecC_out_gg(x1, x2)  =  lecC_out_gg(x1, x2)
gtcD_in_gg(x1, x2)  =  gtcD_in_gg(x1, x2)
U26_gg(x1, x2, x3)  =  U26_gg(x1, x2, x3)
gtcD_out_gg(x1, x2)  =  gtcD_out_gg(x1, x2)
splitcE_in_gaa(x1, x2, x3)  =  splitcE_in_gaa(x1)
splitcE_out_gaa(x1, x2, x3)  =  splitcE_out_gaa(x1, x2, x3)
U27_gaa(x1, x2, x3, x4, x5)  =  U27_gaa(x1, x2, x5)
mergesortcF_in_ga(x1, x2)  =  mergesortcF_in_ga(x1)
mergesortcF_out_ga(x1, x2)  =  mergesortcF_out_ga(x1, x2)
U28_ga(x1, x2, x3, x4)  =  U28_ga(x1, x2, x4)
U29_ga(x1, x2, x3, x4, x5)  =  U29_ga(x1, x2, x4, x5)
U30_ga(x1, x2, x3, x4)  =  U30_ga(x1, x2, x4)
mergecB_in_gga(x1, x2, x3)  =  mergecB_in_gga(x1, x2)
mergecB_out_gga(x1, x2, x3)  =  mergecB_out_gga(x1, x2, x3)
U21_gga(x1, x2, x3, x4, x5, x6)  =  U21_gga(x1, x2, x3, x4, x6)
U22_gga(x1, x2, x3, x4, x5, x6)  =  U22_gga(x1, x2, x3, x4, x6)
U23_gga(x1, x2, x3, x4, x5, x6)  =  U23_gga(x1, x2, x3, x4, x6)
U24_gga(x1, x2, x3, x4, x5, x6)  =  U24_gga(x1, x2, x3, x4, x6)
U31_ga(x1, x2, x3, x4, x5, x6)  =  U31_ga(x1, x2, x3, x4, x6)
U32_ga(x1, x2, x3, x4, x5, x6, x7)  =  U32_ga(x1, x2, x3, x4, x6, x7)
U33_ga(x1, x2, x3, x4, x5, x6, x7)  =  U33_ga(x1, x2, x3, x4, x6, x7)
U34_ga(x1, x2, x3, x4, x5, x6)  =  U34_ga(x1, x2, x3, x4, x6)
GTD_IN_GG(x1, x2)  =  GTD_IN_GG(x1, x2)

We have to consider all (P,R,Pi)-chains

(17) UsableRulesProof (EQUIVALENT transformation)

For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R.

(18) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

GTD_IN_GG(s(X1), s(X2)) → GTD_IN_GG(X1, X2)

R is empty.
Pi is empty.
We have to consider all (P,R,Pi)-chains

(19) PiDPToQDPProof (EQUIVALENT transformation)

Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi.

(20) Obligation:

Q DP problem:
The TRS P consists of the following rules:

GTD_IN_GG(s(X1), s(X2)) → GTD_IN_GG(X1, X2)

R is empty.
Q is empty.
We have to consider all (P,Q,R)-chains.

(21) QDPSizeChangeProof (EQUIVALENT transformation)

By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:

  • GTD_IN_GG(s(X1), s(X2)) → GTD_IN_GG(X1, X2)
    The graph contains the following edges 1 > 1, 2 > 2

(22) YES

(23) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

LEC_IN_GG(s(X1), s(X2)) → LEC_IN_GG(X1, X2)

The TRS R consists of the following rules:

mergesortcA_in_ga(X1, .(X1, [])) → mergesortcA_out_ga(X1, .(X1, []))
lecC_in_gg(s(X1), s(X2)) → U25_gg(X1, X2, lecC_in_gg(X1, X2))
lecC_in_gg(0, s(X1)) → lecC_out_gg(0, s(X1))
lecC_in_gg(0, 0) → lecC_out_gg(0, 0)
U25_gg(X1, X2, lecC_out_gg(X1, X2)) → lecC_out_gg(s(X1), s(X2))
gtcD_in_gg(s(X1), s(X2)) → U26_gg(X1, X2, gtcD_in_gg(X1, X2))
gtcD_in_gg(s(X1), 0) → gtcD_out_gg(s(X1), 0)
U26_gg(X1, X2, gtcD_out_gg(X1, X2)) → gtcD_out_gg(s(X1), s(X2))
splitcE_in_gaa([], [], []) → splitcE_out_gaa([], [], [])
splitcE_in_gaa(.(X1, X2), .(X1, X3), X4) → U27_gaa(X1, X2, X3, X4, splitcE_in_gaa(X2, X4, X3))
U27_gaa(X1, X2, X3, X4, splitcE_out_gaa(X2, X4, X3)) → splitcE_out_gaa(.(X1, X2), .(X1, X3), X4)
mergesortcF_in_ga([], []) → mergesortcF_out_ga([], [])
mergesortcF_in_ga(.(X1, []), .(X1, [])) → mergesortcF_out_ga(.(X1, []), .(X1, []))
mergesortcF_in_ga(.(X1, .(X2, [])), X3) → U28_ga(X1, X2, X3, mergesortcA_in_ga(X1, X4))
U28_ga(X1, X2, X3, mergesortcA_out_ga(X1, X4)) → U29_ga(X1, X2, X3, X4, mergesortcA_in_ga(X2, X5))
U29_ga(X1, X2, X3, X4, mergesortcA_out_ga(X2, X5)) → U30_ga(X1, X2, X3, mergecB_in_gga(X4, X5, X3))
mergecB_in_gga(X1, [], X1) → mergecB_out_gga(X1, [], X1)
mergecB_in_gga([], X1, X1) → mergecB_out_gga([], X1, X1)
mergecB_in_gga(.(X1, X2), .(X3, X4), .(X1, X5)) → U21_gga(X1, X2, X3, X4, X5, lecC_in_gg(X1, X3))
U21_gga(X1, X2, X3, X4, X5, lecC_out_gg(X1, X3)) → U22_gga(X1, X2, X3, X4, X5, mergecB_in_gga(X2, .(X3, X4), X5))
mergecB_in_gga(.(X1, X2), .(X3, X4), .(X3, X5)) → U23_gga(X1, X2, X3, X4, X5, gtcD_in_gg(X1, X3))
U23_gga(X1, X2, X3, X4, X5, gtcD_out_gg(X1, X3)) → U24_gga(X1, X2, X3, X4, X5, mergecB_in_gga(.(X1, X2), X4, X5))
U24_gga(X1, X2, X3, X4, X5, mergecB_out_gga(.(X1, X2), X4, X5)) → mergecB_out_gga(.(X1, X2), .(X3, X4), .(X3, X5))
U22_gga(X1, X2, X3, X4, X5, mergecB_out_gga(X2, .(X3, X4), X5)) → mergecB_out_gga(.(X1, X2), .(X3, X4), .(X1, X5))
U30_ga(X1, X2, X3, mergecB_out_gga(X4, X5, X3)) → mergesortcF_out_ga(.(X1, .(X2, [])), X3)
mergesortcF_in_ga(.(X1, .(X2, .(X3, X4))), X5) → U31_ga(X1, X2, X3, X4, X5, splitcE_in_gaa(X4, X6, X7))
U31_ga(X1, X2, X3, X4, X5, splitcE_out_gaa(X4, X6, X7)) → U32_ga(X1, X2, X3, X4, X5, X6, mergesortcF_in_ga(.(X1, .(X3, X7)), X8))
U32_ga(X1, X2, X3, X4, X5, X6, mergesortcF_out_ga(.(X1, .(X3, X7)), X8)) → U33_ga(X1, X2, X3, X4, X5, X8, mergesortcF_in_ga(.(X2, X6), X9))
U33_ga(X1, X2, X3, X4, X5, X8, mergesortcF_out_ga(.(X2, X6), X9)) → U34_ga(X1, X2, X3, X4, X5, mergecB_in_gga(X8, X9, X5))
U34_ga(X1, X2, X3, X4, X5, mergecB_out_gga(X8, X9, X5)) → mergesortcF_out_ga(.(X1, .(X2, .(X3, X4))), X5)

The argument filtering Pi contains the following mapping:
.(x1, x2)  =  .(x1, x2)
[]  =  []
mergesortcA_in_ga(x1, x2)  =  mergesortcA_in_ga(x1)
mergesortcA_out_ga(x1, x2)  =  mergesortcA_out_ga(x1, x2)
s(x1)  =  s(x1)
lecC_in_gg(x1, x2)  =  lecC_in_gg(x1, x2)
U25_gg(x1, x2, x3)  =  U25_gg(x1, x2, x3)
0  =  0
lecC_out_gg(x1, x2)  =  lecC_out_gg(x1, x2)
gtcD_in_gg(x1, x2)  =  gtcD_in_gg(x1, x2)
U26_gg(x1, x2, x3)  =  U26_gg(x1, x2, x3)
gtcD_out_gg(x1, x2)  =  gtcD_out_gg(x1, x2)
splitcE_in_gaa(x1, x2, x3)  =  splitcE_in_gaa(x1)
splitcE_out_gaa(x1, x2, x3)  =  splitcE_out_gaa(x1, x2, x3)
U27_gaa(x1, x2, x3, x4, x5)  =  U27_gaa(x1, x2, x5)
mergesortcF_in_ga(x1, x2)  =  mergesortcF_in_ga(x1)
mergesortcF_out_ga(x1, x2)  =  mergesortcF_out_ga(x1, x2)
U28_ga(x1, x2, x3, x4)  =  U28_ga(x1, x2, x4)
U29_ga(x1, x2, x3, x4, x5)  =  U29_ga(x1, x2, x4, x5)
U30_ga(x1, x2, x3, x4)  =  U30_ga(x1, x2, x4)
mergecB_in_gga(x1, x2, x3)  =  mergecB_in_gga(x1, x2)
mergecB_out_gga(x1, x2, x3)  =  mergecB_out_gga(x1, x2, x3)
U21_gga(x1, x2, x3, x4, x5, x6)  =  U21_gga(x1, x2, x3, x4, x6)
U22_gga(x1, x2, x3, x4, x5, x6)  =  U22_gga(x1, x2, x3, x4, x6)
U23_gga(x1, x2, x3, x4, x5, x6)  =  U23_gga(x1, x2, x3, x4, x6)
U24_gga(x1, x2, x3, x4, x5, x6)  =  U24_gga(x1, x2, x3, x4, x6)
U31_ga(x1, x2, x3, x4, x5, x6)  =  U31_ga(x1, x2, x3, x4, x6)
U32_ga(x1, x2, x3, x4, x5, x6, x7)  =  U32_ga(x1, x2, x3, x4, x6, x7)
U33_ga(x1, x2, x3, x4, x5, x6, x7)  =  U33_ga(x1, x2, x3, x4, x6, x7)
U34_ga(x1, x2, x3, x4, x5, x6)  =  U34_ga(x1, x2, x3, x4, x6)
LEC_IN_GG(x1, x2)  =  LEC_IN_GG(x1, x2)

We have to consider all (P,R,Pi)-chains

(24) UsableRulesProof (EQUIVALENT transformation)

For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R.

(25) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

LEC_IN_GG(s(X1), s(X2)) → LEC_IN_GG(X1, X2)

R is empty.
Pi is empty.
We have to consider all (P,R,Pi)-chains

(26) PiDPToQDPProof (EQUIVALENT transformation)

Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi.

(27) Obligation:

Q DP problem:
The TRS P consists of the following rules:

LEC_IN_GG(s(X1), s(X2)) → LEC_IN_GG(X1, X2)

R is empty.
Q is empty.
We have to consider all (P,Q,R)-chains.

(28) QDPSizeChangeProof (EQUIVALENT transformation)

By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:

  • LEC_IN_GG(s(X1), s(X2)) → LEC_IN_GG(X1, X2)
    The graph contains the following edges 1 > 1, 2 > 2

(29) YES

(30) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

MERGEB_IN_GGA(.(X1, X2), .(X3, X4), .(X1, X5)) → U2_GGA(X1, X2, X3, X4, X5, lecC_in_gg(X1, X3))
U2_GGA(X1, X2, X3, X4, X5, lecC_out_gg(X1, X3)) → MERGEB_IN_GGA(X2, .(X3, X4), X5)
MERGEB_IN_GGA(.(X1, X2), .(X3, X4), .(X3, X5)) → U5_GGA(X1, X2, X3, X4, X5, gtcD_in_gg(X1, X3))
U5_GGA(X1, X2, X3, X4, X5, gtcD_out_gg(X1, X3)) → MERGEB_IN_GGA(.(X1, X2), X4, X5)

The TRS R consists of the following rules:

mergesortcA_in_ga(X1, .(X1, [])) → mergesortcA_out_ga(X1, .(X1, []))
lecC_in_gg(s(X1), s(X2)) → U25_gg(X1, X2, lecC_in_gg(X1, X2))
lecC_in_gg(0, s(X1)) → lecC_out_gg(0, s(X1))
lecC_in_gg(0, 0) → lecC_out_gg(0, 0)
U25_gg(X1, X2, lecC_out_gg(X1, X2)) → lecC_out_gg(s(X1), s(X2))
gtcD_in_gg(s(X1), s(X2)) → U26_gg(X1, X2, gtcD_in_gg(X1, X2))
gtcD_in_gg(s(X1), 0) → gtcD_out_gg(s(X1), 0)
U26_gg(X1, X2, gtcD_out_gg(X1, X2)) → gtcD_out_gg(s(X1), s(X2))
splitcE_in_gaa([], [], []) → splitcE_out_gaa([], [], [])
splitcE_in_gaa(.(X1, X2), .(X1, X3), X4) → U27_gaa(X1, X2, X3, X4, splitcE_in_gaa(X2, X4, X3))
U27_gaa(X1, X2, X3, X4, splitcE_out_gaa(X2, X4, X3)) → splitcE_out_gaa(.(X1, X2), .(X1, X3), X4)
mergesortcF_in_ga([], []) → mergesortcF_out_ga([], [])
mergesortcF_in_ga(.(X1, []), .(X1, [])) → mergesortcF_out_ga(.(X1, []), .(X1, []))
mergesortcF_in_ga(.(X1, .(X2, [])), X3) → U28_ga(X1, X2, X3, mergesortcA_in_ga(X1, X4))
U28_ga(X1, X2, X3, mergesortcA_out_ga(X1, X4)) → U29_ga(X1, X2, X3, X4, mergesortcA_in_ga(X2, X5))
U29_ga(X1, X2, X3, X4, mergesortcA_out_ga(X2, X5)) → U30_ga(X1, X2, X3, mergecB_in_gga(X4, X5, X3))
mergecB_in_gga(X1, [], X1) → mergecB_out_gga(X1, [], X1)
mergecB_in_gga([], X1, X1) → mergecB_out_gga([], X1, X1)
mergecB_in_gga(.(X1, X2), .(X3, X4), .(X1, X5)) → U21_gga(X1, X2, X3, X4, X5, lecC_in_gg(X1, X3))
U21_gga(X1, X2, X3, X4, X5, lecC_out_gg(X1, X3)) → U22_gga(X1, X2, X3, X4, X5, mergecB_in_gga(X2, .(X3, X4), X5))
mergecB_in_gga(.(X1, X2), .(X3, X4), .(X3, X5)) → U23_gga(X1, X2, X3, X4, X5, gtcD_in_gg(X1, X3))
U23_gga(X1, X2, X3, X4, X5, gtcD_out_gg(X1, X3)) → U24_gga(X1, X2, X3, X4, X5, mergecB_in_gga(.(X1, X2), X4, X5))
U24_gga(X1, X2, X3, X4, X5, mergecB_out_gga(.(X1, X2), X4, X5)) → mergecB_out_gga(.(X1, X2), .(X3, X4), .(X3, X5))
U22_gga(X1, X2, X3, X4, X5, mergecB_out_gga(X2, .(X3, X4), X5)) → mergecB_out_gga(.(X1, X2), .(X3, X4), .(X1, X5))
U30_ga(X1, X2, X3, mergecB_out_gga(X4, X5, X3)) → mergesortcF_out_ga(.(X1, .(X2, [])), X3)
mergesortcF_in_ga(.(X1, .(X2, .(X3, X4))), X5) → U31_ga(X1, X2, X3, X4, X5, splitcE_in_gaa(X4, X6, X7))
U31_ga(X1, X2, X3, X4, X5, splitcE_out_gaa(X4, X6, X7)) → U32_ga(X1, X2, X3, X4, X5, X6, mergesortcF_in_ga(.(X1, .(X3, X7)), X8))
U32_ga(X1, X2, X3, X4, X5, X6, mergesortcF_out_ga(.(X1, .(X3, X7)), X8)) → U33_ga(X1, X2, X3, X4, X5, X8, mergesortcF_in_ga(.(X2, X6), X9))
U33_ga(X1, X2, X3, X4, X5, X8, mergesortcF_out_ga(.(X2, X6), X9)) → U34_ga(X1, X2, X3, X4, X5, mergecB_in_gga(X8, X9, X5))
U34_ga(X1, X2, X3, X4, X5, mergecB_out_gga(X8, X9, X5)) → mergesortcF_out_ga(.(X1, .(X2, .(X3, X4))), X5)

The argument filtering Pi contains the following mapping:
.(x1, x2)  =  .(x1, x2)
[]  =  []
mergesortcA_in_ga(x1, x2)  =  mergesortcA_in_ga(x1)
mergesortcA_out_ga(x1, x2)  =  mergesortcA_out_ga(x1, x2)
s(x1)  =  s(x1)
lecC_in_gg(x1, x2)  =  lecC_in_gg(x1, x2)
U25_gg(x1, x2, x3)  =  U25_gg(x1, x2, x3)
0  =  0
lecC_out_gg(x1, x2)  =  lecC_out_gg(x1, x2)
gtcD_in_gg(x1, x2)  =  gtcD_in_gg(x1, x2)
U26_gg(x1, x2, x3)  =  U26_gg(x1, x2, x3)
gtcD_out_gg(x1, x2)  =  gtcD_out_gg(x1, x2)
splitcE_in_gaa(x1, x2, x3)  =  splitcE_in_gaa(x1)
splitcE_out_gaa(x1, x2, x3)  =  splitcE_out_gaa(x1, x2, x3)
U27_gaa(x1, x2, x3, x4, x5)  =  U27_gaa(x1, x2, x5)
mergesortcF_in_ga(x1, x2)  =  mergesortcF_in_ga(x1)
mergesortcF_out_ga(x1, x2)  =  mergesortcF_out_ga(x1, x2)
U28_ga(x1, x2, x3, x4)  =  U28_ga(x1, x2, x4)
U29_ga(x1, x2, x3, x4, x5)  =  U29_ga(x1, x2, x4, x5)
U30_ga(x1, x2, x3, x4)  =  U30_ga(x1, x2, x4)
mergecB_in_gga(x1, x2, x3)  =  mergecB_in_gga(x1, x2)
mergecB_out_gga(x1, x2, x3)  =  mergecB_out_gga(x1, x2, x3)
U21_gga(x1, x2, x3, x4, x5, x6)  =  U21_gga(x1, x2, x3, x4, x6)
U22_gga(x1, x2, x3, x4, x5, x6)  =  U22_gga(x1, x2, x3, x4, x6)
U23_gga(x1, x2, x3, x4, x5, x6)  =  U23_gga(x1, x2, x3, x4, x6)
U24_gga(x1, x2, x3, x4, x5, x6)  =  U24_gga(x1, x2, x3, x4, x6)
U31_ga(x1, x2, x3, x4, x5, x6)  =  U31_ga(x1, x2, x3, x4, x6)
U32_ga(x1, x2, x3, x4, x5, x6, x7)  =  U32_ga(x1, x2, x3, x4, x6, x7)
U33_ga(x1, x2, x3, x4, x5, x6, x7)  =  U33_ga(x1, x2, x3, x4, x6, x7)
U34_ga(x1, x2, x3, x4, x5, x6)  =  U34_ga(x1, x2, x3, x4, x6)
MERGEB_IN_GGA(x1, x2, x3)  =  MERGEB_IN_GGA(x1, x2)
U2_GGA(x1, x2, x3, x4, x5, x6)  =  U2_GGA(x1, x2, x3, x4, x6)
U5_GGA(x1, x2, x3, x4, x5, x6)  =  U5_GGA(x1, x2, x3, x4, x6)

We have to consider all (P,R,Pi)-chains

(31) UsableRulesProof (EQUIVALENT transformation)

For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R.

(32) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

MERGEB_IN_GGA(.(X1, X2), .(X3, X4), .(X1, X5)) → U2_GGA(X1, X2, X3, X4, X5, lecC_in_gg(X1, X3))
U2_GGA(X1, X2, X3, X4, X5, lecC_out_gg(X1, X3)) → MERGEB_IN_GGA(X2, .(X3, X4), X5)
MERGEB_IN_GGA(.(X1, X2), .(X3, X4), .(X3, X5)) → U5_GGA(X1, X2, X3, X4, X5, gtcD_in_gg(X1, X3))
U5_GGA(X1, X2, X3, X4, X5, gtcD_out_gg(X1, X3)) → MERGEB_IN_GGA(.(X1, X2), X4, X5)

The TRS R consists of the following rules:

lecC_in_gg(s(X1), s(X2)) → U25_gg(X1, X2, lecC_in_gg(X1, X2))
lecC_in_gg(0, s(X1)) → lecC_out_gg(0, s(X1))
lecC_in_gg(0, 0) → lecC_out_gg(0, 0)
gtcD_in_gg(s(X1), s(X2)) → U26_gg(X1, X2, gtcD_in_gg(X1, X2))
gtcD_in_gg(s(X1), 0) → gtcD_out_gg(s(X1), 0)
U25_gg(X1, X2, lecC_out_gg(X1, X2)) → lecC_out_gg(s(X1), s(X2))
U26_gg(X1, X2, gtcD_out_gg(X1, X2)) → gtcD_out_gg(s(X1), s(X2))

The argument filtering Pi contains the following mapping:
.(x1, x2)  =  .(x1, x2)
s(x1)  =  s(x1)
lecC_in_gg(x1, x2)  =  lecC_in_gg(x1, x2)
U25_gg(x1, x2, x3)  =  U25_gg(x1, x2, x3)
0  =  0
lecC_out_gg(x1, x2)  =  lecC_out_gg(x1, x2)
gtcD_in_gg(x1, x2)  =  gtcD_in_gg(x1, x2)
U26_gg(x1, x2, x3)  =  U26_gg(x1, x2, x3)
gtcD_out_gg(x1, x2)  =  gtcD_out_gg(x1, x2)
MERGEB_IN_GGA(x1, x2, x3)  =  MERGEB_IN_GGA(x1, x2)
U2_GGA(x1, x2, x3, x4, x5, x6)  =  U2_GGA(x1, x2, x3, x4, x6)
U5_GGA(x1, x2, x3, x4, x5, x6)  =  U5_GGA(x1, x2, x3, x4, x6)

We have to consider all (P,R,Pi)-chains

(33) PiDPToQDPProof (SOUND transformation)

Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi.

(34) Obligation:

Q DP problem:
The TRS P consists of the following rules:

MERGEB_IN_GGA(.(X1, X2), .(X3, X4)) → U2_GGA(X1, X2, X3, X4, lecC_in_gg(X1, X3))
U2_GGA(X1, X2, X3, X4, lecC_out_gg(X1, X3)) → MERGEB_IN_GGA(X2, .(X3, X4))
MERGEB_IN_GGA(.(X1, X2), .(X3, X4)) → U5_GGA(X1, X2, X3, X4, gtcD_in_gg(X1, X3))
U5_GGA(X1, X2, X3, X4, gtcD_out_gg(X1, X3)) → MERGEB_IN_GGA(.(X1, X2), X4)

The TRS R consists of the following rules:

lecC_in_gg(s(X1), s(X2)) → U25_gg(X1, X2, lecC_in_gg(X1, X2))
lecC_in_gg(0, s(X1)) → lecC_out_gg(0, s(X1))
lecC_in_gg(0, 0) → lecC_out_gg(0, 0)
gtcD_in_gg(s(X1), s(X2)) → U26_gg(X1, X2, gtcD_in_gg(X1, X2))
gtcD_in_gg(s(X1), 0) → gtcD_out_gg(s(X1), 0)
U25_gg(X1, X2, lecC_out_gg(X1, X2)) → lecC_out_gg(s(X1), s(X2))
U26_gg(X1, X2, gtcD_out_gg(X1, X2)) → gtcD_out_gg(s(X1), s(X2))

The set Q consists of the following terms:

lecC_in_gg(x0, x1)
gtcD_in_gg(x0, x1)
U25_gg(x0, x1, x2)
U26_gg(x0, x1, x2)

We have to consider all (P,Q,R)-chains.

(35) MRRProof (EQUIVALENT transformation)

By using the rule removal processor [LPAR04] with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented.
Strictly oriented dependency pairs:

MERGEB_IN_GGA(.(X1, X2), .(X3, X4)) → U2_GGA(X1, X2, X3, X4, lecC_in_gg(X1, X3))

Strictly oriented rules of the TRS R:

gtcD_in_gg(s(X1), 0) → gtcD_out_gg(s(X1), 0)

Used ordering: Polynomial interpretation [POLO]:

POL(.(x1, x2)) = 1 + 2·x1 + x2   
POL(0) = 0   
POL(MERGEB_IN_GGA(x1, x2)) = 2·x1 + 2·x2   
POL(U25_gg(x1, x2, x3)) = 2·x1 + 2·x2 + x3   
POL(U26_gg(x1, x2, x3)) = x1 + x2 + x3   
POL(U2_GGA(x1, x2, x3, x4, x5)) = 2 + x1 + 2·x2 + 2·x3 + 2·x4 + x5   
POL(U5_GGA(x1, x2, x3, x4, x5)) = 2 + 2·x1 + 2·x2 + 2·x3 + 2·x4 + 2·x5   
POL(gtcD_in_gg(x1, x2)) = 1 + x1 + x2   
POL(gtcD_out_gg(x1, x2)) = x1 + x2   
POL(lecC_in_gg(x1, x2)) = 2·x1 + 2·x2   
POL(lecC_out_gg(x1, x2)) = 2·x1 + 2·x2   
POL(s(x1)) = 2·x1   

(36) Obligation:

Q DP problem:
The TRS P consists of the following rules:

U2_GGA(X1, X2, X3, X4, lecC_out_gg(X1, X3)) → MERGEB_IN_GGA(X2, .(X3, X4))
MERGEB_IN_GGA(.(X1, X2), .(X3, X4)) → U5_GGA(X1, X2, X3, X4, gtcD_in_gg(X1, X3))
U5_GGA(X1, X2, X3, X4, gtcD_out_gg(X1, X3)) → MERGEB_IN_GGA(.(X1, X2), X4)

The TRS R consists of the following rules:

lecC_in_gg(s(X1), s(X2)) → U25_gg(X1, X2, lecC_in_gg(X1, X2))
lecC_in_gg(0, s(X1)) → lecC_out_gg(0, s(X1))
lecC_in_gg(0, 0) → lecC_out_gg(0, 0)
gtcD_in_gg(s(X1), s(X2)) → U26_gg(X1, X2, gtcD_in_gg(X1, X2))
U25_gg(X1, X2, lecC_out_gg(X1, X2)) → lecC_out_gg(s(X1), s(X2))
U26_gg(X1, X2, gtcD_out_gg(X1, X2)) → gtcD_out_gg(s(X1), s(X2))

The set Q consists of the following terms:

lecC_in_gg(x0, x1)
gtcD_in_gg(x0, x1)
U25_gg(x0, x1, x2)
U26_gg(x0, x1, x2)

We have to consider all (P,Q,R)-chains.

(37) DependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node.

(38) Obligation:

Q DP problem:
The TRS P consists of the following rules:

U5_GGA(X1, X2, X3, X4, gtcD_out_gg(X1, X3)) → MERGEB_IN_GGA(.(X1, X2), X4)
MERGEB_IN_GGA(.(X1, X2), .(X3, X4)) → U5_GGA(X1, X2, X3, X4, gtcD_in_gg(X1, X3))

The TRS R consists of the following rules:

lecC_in_gg(s(X1), s(X2)) → U25_gg(X1, X2, lecC_in_gg(X1, X2))
lecC_in_gg(0, s(X1)) → lecC_out_gg(0, s(X1))
lecC_in_gg(0, 0) → lecC_out_gg(0, 0)
gtcD_in_gg(s(X1), s(X2)) → U26_gg(X1, X2, gtcD_in_gg(X1, X2))
U25_gg(X1, X2, lecC_out_gg(X1, X2)) → lecC_out_gg(s(X1), s(X2))
U26_gg(X1, X2, gtcD_out_gg(X1, X2)) → gtcD_out_gg(s(X1), s(X2))

The set Q consists of the following terms:

lecC_in_gg(x0, x1)
gtcD_in_gg(x0, x1)
U25_gg(x0, x1, x2)
U26_gg(x0, x1, x2)

We have to consider all (P,Q,R)-chains.

(39) UsableRulesProof (EQUIVALENT transformation)

As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.

(40) Obligation:

Q DP problem:
The TRS P consists of the following rules:

U5_GGA(X1, X2, X3, X4, gtcD_out_gg(X1, X3)) → MERGEB_IN_GGA(.(X1, X2), X4)
MERGEB_IN_GGA(.(X1, X2), .(X3, X4)) → U5_GGA(X1, X2, X3, X4, gtcD_in_gg(X1, X3))

The TRS R consists of the following rules:

gtcD_in_gg(s(X1), s(X2)) → U26_gg(X1, X2, gtcD_in_gg(X1, X2))
U26_gg(X1, X2, gtcD_out_gg(X1, X2)) → gtcD_out_gg(s(X1), s(X2))

The set Q consists of the following terms:

lecC_in_gg(x0, x1)
gtcD_in_gg(x0, x1)
U25_gg(x0, x1, x2)
U26_gg(x0, x1, x2)

We have to consider all (P,Q,R)-chains.

(41) QReductionProof (EQUIVALENT transformation)

We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN].

lecC_in_gg(x0, x1)
U25_gg(x0, x1, x2)

(42) Obligation:

Q DP problem:
The TRS P consists of the following rules:

U5_GGA(X1, X2, X3, X4, gtcD_out_gg(X1, X3)) → MERGEB_IN_GGA(.(X1, X2), X4)
MERGEB_IN_GGA(.(X1, X2), .(X3, X4)) → U5_GGA(X1, X2, X3, X4, gtcD_in_gg(X1, X3))

The TRS R consists of the following rules:

gtcD_in_gg(s(X1), s(X2)) → U26_gg(X1, X2, gtcD_in_gg(X1, X2))
U26_gg(X1, X2, gtcD_out_gg(X1, X2)) → gtcD_out_gg(s(X1), s(X2))

The set Q consists of the following terms:

gtcD_in_gg(x0, x1)
U26_gg(x0, x1, x2)

We have to consider all (P,Q,R)-chains.

(43) QDPSizeChangeProof (EQUIVALENT transformation)

By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:

  • MERGEB_IN_GGA(.(X1, X2), .(X3, X4)) → U5_GGA(X1, X2, X3, X4, gtcD_in_gg(X1, X3))
    The graph contains the following edges 1 > 1, 1 > 2, 2 > 3, 2 > 4

  • U5_GGA(X1, X2, X3, X4, gtcD_out_gg(X1, X3)) → MERGEB_IN_GGA(.(X1, X2), X4)
    The graph contains the following edges 4 >= 2

(44) YES

(45) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

MERGESORTF_IN_GA(.(X1, .(X2, .(X3, X4))), X5) → U14_GA(X1, X2, X3, X4, X5, splitcE_in_gaa(X4, X6, X7))
U14_GA(X1, X2, X3, X4, X5, splitcE_out_gaa(X4, X6, X7)) → MERGESORTF_IN_GA(.(X1, .(X3, X7)), X8)
U14_GA(X1, X2, X3, X4, X5, splitcE_out_gaa(X4, X6, X7)) → U16_GA(X1, X2, X3, X4, X5, X6, mergesortcF_in_ga(.(X1, .(X3, X7)), X8))
U16_GA(X1, X2, X3, X4, X5, X6, mergesortcF_out_ga(.(X1, .(X3, X7)), X8)) → MERGESORTF_IN_GA(.(X2, X6), X9)

The TRS R consists of the following rules:

mergesortcA_in_ga(X1, .(X1, [])) → mergesortcA_out_ga(X1, .(X1, []))
lecC_in_gg(s(X1), s(X2)) → U25_gg(X1, X2, lecC_in_gg(X1, X2))
lecC_in_gg(0, s(X1)) → lecC_out_gg(0, s(X1))
lecC_in_gg(0, 0) → lecC_out_gg(0, 0)
U25_gg(X1, X2, lecC_out_gg(X1, X2)) → lecC_out_gg(s(X1), s(X2))
gtcD_in_gg(s(X1), s(X2)) → U26_gg(X1, X2, gtcD_in_gg(X1, X2))
gtcD_in_gg(s(X1), 0) → gtcD_out_gg(s(X1), 0)
U26_gg(X1, X2, gtcD_out_gg(X1, X2)) → gtcD_out_gg(s(X1), s(X2))
splitcE_in_gaa([], [], []) → splitcE_out_gaa([], [], [])
splitcE_in_gaa(.(X1, X2), .(X1, X3), X4) → U27_gaa(X1, X2, X3, X4, splitcE_in_gaa(X2, X4, X3))
U27_gaa(X1, X2, X3, X4, splitcE_out_gaa(X2, X4, X3)) → splitcE_out_gaa(.(X1, X2), .(X1, X3), X4)
mergesortcF_in_ga([], []) → mergesortcF_out_ga([], [])
mergesortcF_in_ga(.(X1, []), .(X1, [])) → mergesortcF_out_ga(.(X1, []), .(X1, []))
mergesortcF_in_ga(.(X1, .(X2, [])), X3) → U28_ga(X1, X2, X3, mergesortcA_in_ga(X1, X4))
U28_ga(X1, X2, X3, mergesortcA_out_ga(X1, X4)) → U29_ga(X1, X2, X3, X4, mergesortcA_in_ga(X2, X5))
U29_ga(X1, X2, X3, X4, mergesortcA_out_ga(X2, X5)) → U30_ga(X1, X2, X3, mergecB_in_gga(X4, X5, X3))
mergecB_in_gga(X1, [], X1) → mergecB_out_gga(X1, [], X1)
mergecB_in_gga([], X1, X1) → mergecB_out_gga([], X1, X1)
mergecB_in_gga(.(X1, X2), .(X3, X4), .(X1, X5)) → U21_gga(X1, X2, X3, X4, X5, lecC_in_gg(X1, X3))
U21_gga(X1, X2, X3, X4, X5, lecC_out_gg(X1, X3)) → U22_gga(X1, X2, X3, X4, X5, mergecB_in_gga(X2, .(X3, X4), X5))
mergecB_in_gga(.(X1, X2), .(X3, X4), .(X3, X5)) → U23_gga(X1, X2, X3, X4, X5, gtcD_in_gg(X1, X3))
U23_gga(X1, X2, X3, X4, X5, gtcD_out_gg(X1, X3)) → U24_gga(X1, X2, X3, X4, X5, mergecB_in_gga(.(X1, X2), X4, X5))
U24_gga(X1, X2, X3, X4, X5, mergecB_out_gga(.(X1, X2), X4, X5)) → mergecB_out_gga(.(X1, X2), .(X3, X4), .(X3, X5))
U22_gga(X1, X2, X3, X4, X5, mergecB_out_gga(X2, .(X3, X4), X5)) → mergecB_out_gga(.(X1, X2), .(X3, X4), .(X1, X5))
U30_ga(X1, X2, X3, mergecB_out_gga(X4, X5, X3)) → mergesortcF_out_ga(.(X1, .(X2, [])), X3)
mergesortcF_in_ga(.(X1, .(X2, .(X3, X4))), X5) → U31_ga(X1, X2, X3, X4, X5, splitcE_in_gaa(X4, X6, X7))
U31_ga(X1, X2, X3, X4, X5, splitcE_out_gaa(X4, X6, X7)) → U32_ga(X1, X2, X3, X4, X5, X6, mergesortcF_in_ga(.(X1, .(X3, X7)), X8))
U32_ga(X1, X2, X3, X4, X5, X6, mergesortcF_out_ga(.(X1, .(X3, X7)), X8)) → U33_ga(X1, X2, X3, X4, X5, X8, mergesortcF_in_ga(.(X2, X6), X9))
U33_ga(X1, X2, X3, X4, X5, X8, mergesortcF_out_ga(.(X2, X6), X9)) → U34_ga(X1, X2, X3, X4, X5, mergecB_in_gga(X8, X9, X5))
U34_ga(X1, X2, X3, X4, X5, mergecB_out_gga(X8, X9, X5)) → mergesortcF_out_ga(.(X1, .(X2, .(X3, X4))), X5)

The argument filtering Pi contains the following mapping:
.(x1, x2)  =  .(x1, x2)
[]  =  []
mergesortcA_in_ga(x1, x2)  =  mergesortcA_in_ga(x1)
mergesortcA_out_ga(x1, x2)  =  mergesortcA_out_ga(x1, x2)
s(x1)  =  s(x1)
lecC_in_gg(x1, x2)  =  lecC_in_gg(x1, x2)
U25_gg(x1, x2, x3)  =  U25_gg(x1, x2, x3)
0  =  0
lecC_out_gg(x1, x2)  =  lecC_out_gg(x1, x2)
gtcD_in_gg(x1, x2)  =  gtcD_in_gg(x1, x2)
U26_gg(x1, x2, x3)  =  U26_gg(x1, x2, x3)
gtcD_out_gg(x1, x2)  =  gtcD_out_gg(x1, x2)
splitcE_in_gaa(x1, x2, x3)  =  splitcE_in_gaa(x1)
splitcE_out_gaa(x1, x2, x3)  =  splitcE_out_gaa(x1, x2, x3)
U27_gaa(x1, x2, x3, x4, x5)  =  U27_gaa(x1, x2, x5)
mergesortcF_in_ga(x1, x2)  =  mergesortcF_in_ga(x1)
mergesortcF_out_ga(x1, x2)  =  mergesortcF_out_ga(x1, x2)
U28_ga(x1, x2, x3, x4)  =  U28_ga(x1, x2, x4)
U29_ga(x1, x2, x3, x4, x5)  =  U29_ga(x1, x2, x4, x5)
U30_ga(x1, x2, x3, x4)  =  U30_ga(x1, x2, x4)
mergecB_in_gga(x1, x2, x3)  =  mergecB_in_gga(x1, x2)
mergecB_out_gga(x1, x2, x3)  =  mergecB_out_gga(x1, x2, x3)
U21_gga(x1, x2, x3, x4, x5, x6)  =  U21_gga(x1, x2, x3, x4, x6)
U22_gga(x1, x2, x3, x4, x5, x6)  =  U22_gga(x1, x2, x3, x4, x6)
U23_gga(x1, x2, x3, x4, x5, x6)  =  U23_gga(x1, x2, x3, x4, x6)
U24_gga(x1, x2, x3, x4, x5, x6)  =  U24_gga(x1, x2, x3, x4, x6)
U31_ga(x1, x2, x3, x4, x5, x6)  =  U31_ga(x1, x2, x3, x4, x6)
U32_ga(x1, x2, x3, x4, x5, x6, x7)  =  U32_ga(x1, x2, x3, x4, x6, x7)
U33_ga(x1, x2, x3, x4, x5, x6, x7)  =  U33_ga(x1, x2, x3, x4, x6, x7)
U34_ga(x1, x2, x3, x4, x5, x6)  =  U34_ga(x1, x2, x3, x4, x6)
MERGESORTF_IN_GA(x1, x2)  =  MERGESORTF_IN_GA(x1)
U14_GA(x1, x2, x3, x4, x5, x6)  =  U14_GA(x1, x2, x3, x4, x6)
U16_GA(x1, x2, x3, x4, x5, x6, x7)  =  U16_GA(x1, x2, x3, x4, x6, x7)

We have to consider all (P,R,Pi)-chains

(46) UsableRulesProof (EQUIVALENT transformation)

For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R.

(47) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

MERGESORTF_IN_GA(.(X1, .(X2, .(X3, X4))), X5) → U14_GA(X1, X2, X3, X4, X5, splitcE_in_gaa(X4, X6, X7))
U14_GA(X1, X2, X3, X4, X5, splitcE_out_gaa(X4, X6, X7)) → MERGESORTF_IN_GA(.(X1, .(X3, X7)), X8)
U14_GA(X1, X2, X3, X4, X5, splitcE_out_gaa(X4, X6, X7)) → U16_GA(X1, X2, X3, X4, X5, X6, mergesortcF_in_ga(.(X1, .(X3, X7)), X8))
U16_GA(X1, X2, X3, X4, X5, X6, mergesortcF_out_ga(.(X1, .(X3, X7)), X8)) → MERGESORTF_IN_GA(.(X2, X6), X9)

The TRS R consists of the following rules:

splitcE_in_gaa([], [], []) → splitcE_out_gaa([], [], [])
splitcE_in_gaa(.(X1, X2), .(X1, X3), X4) → U27_gaa(X1, X2, X3, X4, splitcE_in_gaa(X2, X4, X3))
mergesortcF_in_ga(.(X1, .(X2, [])), X3) → U28_ga(X1, X2, X3, mergesortcA_in_ga(X1, X4))
mergesortcF_in_ga(.(X1, .(X2, .(X3, X4))), X5) → U31_ga(X1, X2, X3, X4, X5, splitcE_in_gaa(X4, X6, X7))
U27_gaa(X1, X2, X3, X4, splitcE_out_gaa(X2, X4, X3)) → splitcE_out_gaa(.(X1, X2), .(X1, X3), X4)
U28_ga(X1, X2, X3, mergesortcA_out_ga(X1, X4)) → U29_ga(X1, X2, X3, X4, mergesortcA_in_ga(X2, X5))
U31_ga(X1, X2, X3, X4, X5, splitcE_out_gaa(X4, X6, X7)) → U32_ga(X1, X2, X3, X4, X5, X6, mergesortcF_in_ga(.(X1, .(X3, X7)), X8))
mergesortcA_in_ga(X1, .(X1, [])) → mergesortcA_out_ga(X1, .(X1, []))
U29_ga(X1, X2, X3, X4, mergesortcA_out_ga(X2, X5)) → U30_ga(X1, X2, X3, mergecB_in_gga(X4, X5, X3))
U32_ga(X1, X2, X3, X4, X5, X6, mergesortcF_out_ga(.(X1, .(X3, X7)), X8)) → U33_ga(X1, X2, X3, X4, X5, X8, mergesortcF_in_ga(.(X2, X6), X9))
U30_ga(X1, X2, X3, mergecB_out_gga(X4, X5, X3)) → mergesortcF_out_ga(.(X1, .(X2, [])), X3)
U33_ga(X1, X2, X3, X4, X5, X8, mergesortcF_out_ga(.(X2, X6), X9)) → U34_ga(X1, X2, X3, X4, X5, mergecB_in_gga(X8, X9, X5))
mergecB_in_gga(X1, [], X1) → mergecB_out_gga(X1, [], X1)
mergecB_in_gga([], X1, X1) → mergecB_out_gga([], X1, X1)
mergecB_in_gga(.(X1, X2), .(X3, X4), .(X1, X5)) → U21_gga(X1, X2, X3, X4, X5, lecC_in_gg(X1, X3))
mergecB_in_gga(.(X1, X2), .(X3, X4), .(X3, X5)) → U23_gga(X1, X2, X3, X4, X5, gtcD_in_gg(X1, X3))
mergesortcF_in_ga(.(X1, []), .(X1, [])) → mergesortcF_out_ga(.(X1, []), .(X1, []))
U34_ga(X1, X2, X3, X4, X5, mergecB_out_gga(X8, X9, X5)) → mergesortcF_out_ga(.(X1, .(X2, .(X3, X4))), X5)
U21_gga(X1, X2, X3, X4, X5, lecC_out_gg(X1, X3)) → U22_gga(X1, X2, X3, X4, X5, mergecB_in_gga(X2, .(X3, X4), X5))
U23_gga(X1, X2, X3, X4, X5, gtcD_out_gg(X1, X3)) → U24_gga(X1, X2, X3, X4, X5, mergecB_in_gga(.(X1, X2), X4, X5))
lecC_in_gg(s(X1), s(X2)) → U25_gg(X1, X2, lecC_in_gg(X1, X2))
lecC_in_gg(0, s(X1)) → lecC_out_gg(0, s(X1))
lecC_in_gg(0, 0) → lecC_out_gg(0, 0)
U22_gga(X1, X2, X3, X4, X5, mergecB_out_gga(X2, .(X3, X4), X5)) → mergecB_out_gga(.(X1, X2), .(X3, X4), .(X1, X5))
gtcD_in_gg(s(X1), s(X2)) → U26_gg(X1, X2, gtcD_in_gg(X1, X2))
gtcD_in_gg(s(X1), 0) → gtcD_out_gg(s(X1), 0)
U24_gga(X1, X2, X3, X4, X5, mergecB_out_gga(.(X1, X2), X4, X5)) → mergecB_out_gga(.(X1, X2), .(X3, X4), .(X3, X5))
U25_gg(X1, X2, lecC_out_gg(X1, X2)) → lecC_out_gg(s(X1), s(X2))
U26_gg(X1, X2, gtcD_out_gg(X1, X2)) → gtcD_out_gg(s(X1), s(X2))

The argument filtering Pi contains the following mapping:
.(x1, x2)  =  .(x1, x2)
[]  =  []
mergesortcA_in_ga(x1, x2)  =  mergesortcA_in_ga(x1)
mergesortcA_out_ga(x1, x2)  =  mergesortcA_out_ga(x1, x2)
s(x1)  =  s(x1)
lecC_in_gg(x1, x2)  =  lecC_in_gg(x1, x2)
U25_gg(x1, x2, x3)  =  U25_gg(x1, x2, x3)
0  =  0
lecC_out_gg(x1, x2)  =  lecC_out_gg(x1, x2)
gtcD_in_gg(x1, x2)  =  gtcD_in_gg(x1, x2)
U26_gg(x1, x2, x3)  =  U26_gg(x1, x2, x3)
gtcD_out_gg(x1, x2)  =  gtcD_out_gg(x1, x2)
splitcE_in_gaa(x1, x2, x3)  =  splitcE_in_gaa(x1)
splitcE_out_gaa(x1, x2, x3)  =  splitcE_out_gaa(x1, x2, x3)
U27_gaa(x1, x2, x3, x4, x5)  =  U27_gaa(x1, x2, x5)
mergesortcF_in_ga(x1, x2)  =  mergesortcF_in_ga(x1)
mergesortcF_out_ga(x1, x2)  =  mergesortcF_out_ga(x1, x2)
U28_ga(x1, x2, x3, x4)  =  U28_ga(x1, x2, x4)
U29_ga(x1, x2, x3, x4, x5)  =  U29_ga(x1, x2, x4, x5)
U30_ga(x1, x2, x3, x4)  =  U30_ga(x1, x2, x4)
mergecB_in_gga(x1, x2, x3)  =  mergecB_in_gga(x1, x2)
mergecB_out_gga(x1, x2, x3)  =  mergecB_out_gga(x1, x2, x3)
U21_gga(x1, x2, x3, x4, x5, x6)  =  U21_gga(x1, x2, x3, x4, x6)
U22_gga(x1, x2, x3, x4, x5, x6)  =  U22_gga(x1, x2, x3, x4, x6)
U23_gga(x1, x2, x3, x4, x5, x6)  =  U23_gga(x1, x2, x3, x4, x6)
U24_gga(x1, x2, x3, x4, x5, x6)  =  U24_gga(x1, x2, x3, x4, x6)
U31_ga(x1, x2, x3, x4, x5, x6)  =  U31_ga(x1, x2, x3, x4, x6)
U32_ga(x1, x2, x3, x4, x5, x6, x7)  =  U32_ga(x1, x2, x3, x4, x6, x7)
U33_ga(x1, x2, x3, x4, x5, x6, x7)  =  U33_ga(x1, x2, x3, x4, x6, x7)
U34_ga(x1, x2, x3, x4, x5, x6)  =  U34_ga(x1, x2, x3, x4, x6)
MERGESORTF_IN_GA(x1, x2)  =  MERGESORTF_IN_GA(x1)
U14_GA(x1, x2, x3, x4, x5, x6)  =  U14_GA(x1, x2, x3, x4, x6)
U16_GA(x1, x2, x3, x4, x5, x6, x7)  =  U16_GA(x1, x2, x3, x4, x6, x7)

We have to consider all (P,R,Pi)-chains

(48) PiDPToQDPProof (SOUND transformation)

Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi.

(49) Obligation:

Q DP problem:
The TRS P consists of the following rules:

MERGESORTF_IN_GA(.(X1, .(X2, .(X3, X4)))) → U14_GA(X1, X2, X3, X4, splitcE_in_gaa(X4))
U14_GA(X1, X2, X3, X4, splitcE_out_gaa(X4, X6, X7)) → MERGESORTF_IN_GA(.(X1, .(X3, X7)))
U14_GA(X1, X2, X3, X4, splitcE_out_gaa(X4, X6, X7)) → U16_GA(X1, X2, X3, X4, X6, mergesortcF_in_ga(.(X1, .(X3, X7))))
U16_GA(X1, X2, X3, X4, X6, mergesortcF_out_ga(.(X1, .(X3, X7)), X8)) → MERGESORTF_IN_GA(.(X2, X6))

The TRS R consists of the following rules:

splitcE_in_gaa([]) → splitcE_out_gaa([], [], [])
splitcE_in_gaa(.(X1, X2)) → U27_gaa(X1, X2, splitcE_in_gaa(X2))
mergesortcF_in_ga(.(X1, .(X2, []))) → U28_ga(X1, X2, mergesortcA_in_ga(X1))
mergesortcF_in_ga(.(X1, .(X2, .(X3, X4)))) → U31_ga(X1, X2, X3, X4, splitcE_in_gaa(X4))
U27_gaa(X1, X2, splitcE_out_gaa(X2, X4, X3)) → splitcE_out_gaa(.(X1, X2), .(X1, X3), X4)
U28_ga(X1, X2, mergesortcA_out_ga(X1, X4)) → U29_ga(X1, X2, X4, mergesortcA_in_ga(X2))
U31_ga(X1, X2, X3, X4, splitcE_out_gaa(X4, X6, X7)) → U32_ga(X1, X2, X3, X4, X6, mergesortcF_in_ga(.(X1, .(X3, X7))))
mergesortcA_in_ga(X1) → mergesortcA_out_ga(X1, .(X1, []))
U29_ga(X1, X2, X4, mergesortcA_out_ga(X2, X5)) → U30_ga(X1, X2, mergecB_in_gga(X4, X5))
U32_ga(X1, X2, X3, X4, X6, mergesortcF_out_ga(.(X1, .(X3, X7)), X8)) → U33_ga(X1, X2, X3, X4, X8, mergesortcF_in_ga(.(X2, X6)))
U30_ga(X1, X2, mergecB_out_gga(X4, X5, X3)) → mergesortcF_out_ga(.(X1, .(X2, [])), X3)
U33_ga(X1, X2, X3, X4, X8, mergesortcF_out_ga(.(X2, X6), X9)) → U34_ga(X1, X2, X3, X4, mergecB_in_gga(X8, X9))
mergecB_in_gga(X1, []) → mergecB_out_gga(X1, [], X1)
mergecB_in_gga([], X1) → mergecB_out_gga([], X1, X1)
mergecB_in_gga(.(X1, X2), .(X3, X4)) → U21_gga(X1, X2, X3, X4, lecC_in_gg(X1, X3))
mergecB_in_gga(.(X1, X2), .(X3, X4)) → U23_gga(X1, X2, X3, X4, gtcD_in_gg(X1, X3))
mergesortcF_in_ga(.(X1, [])) → mergesortcF_out_ga(.(X1, []), .(X1, []))
U34_ga(X1, X2, X3, X4, mergecB_out_gga(X8, X9, X5)) → mergesortcF_out_ga(.(X1, .(X2, .(X3, X4))), X5)
U21_gga(X1, X2, X3, X4, lecC_out_gg(X1, X3)) → U22_gga(X1, X2, X3, X4, mergecB_in_gga(X2, .(X3, X4)))
U23_gga(X1, X2, X3, X4, gtcD_out_gg(X1, X3)) → U24_gga(X1, X2, X3, X4, mergecB_in_gga(.(X1, X2), X4))
lecC_in_gg(s(X1), s(X2)) → U25_gg(X1, X2, lecC_in_gg(X1, X2))
lecC_in_gg(0, s(X1)) → lecC_out_gg(0, s(X1))
lecC_in_gg(0, 0) → lecC_out_gg(0, 0)
U22_gga(X1, X2, X3, X4, mergecB_out_gga(X2, .(X3, X4), X5)) → mergecB_out_gga(.(X1, X2), .(X3, X4), .(X1, X5))
gtcD_in_gg(s(X1), s(X2)) → U26_gg(X1, X2, gtcD_in_gg(X1, X2))
gtcD_in_gg(s(X1), 0) → gtcD_out_gg(s(X1), 0)
U24_gga(X1, X2, X3, X4, mergecB_out_gga(.(X1, X2), X4, X5)) → mergecB_out_gga(.(X1, X2), .(X3, X4), .(X3, X5))
U25_gg(X1, X2, lecC_out_gg(X1, X2)) → lecC_out_gg(s(X1), s(X2))
U26_gg(X1, X2, gtcD_out_gg(X1, X2)) → gtcD_out_gg(s(X1), s(X2))

The set Q consists of the following terms:

splitcE_in_gaa(x0)
mergesortcF_in_ga(x0)
U27_gaa(x0, x1, x2)
U28_ga(x0, x1, x2)
U31_ga(x0, x1, x2, x3, x4)
mergesortcA_in_ga(x0)
U29_ga(x0, x1, x2, x3)
U32_ga(x0, x1, x2, x3, x4, x5)
U30_ga(x0, x1, x2)
U33_ga(x0, x1, x2, x3, x4, x5)
mergecB_in_gga(x0, x1)
U34_ga(x0, x1, x2, x3, x4)
U21_gga(x0, x1, x2, x3, x4)
U23_gga(x0, x1, x2, x3, x4)
lecC_in_gg(x0, x1)
U22_gga(x0, x1, x2, x3, x4)
gtcD_in_gg(x0, x1)
U24_gga(x0, x1, x2, x3, x4)
U25_gg(x0, x1, x2)
U26_gg(x0, x1, x2)

We have to consider all (P,Q,R)-chains.

(50) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04,JAR06].


The following pairs can be oriented strictly and are deleted.


MERGESORTF_IN_GA(.(X1, .(X2, .(X3, X4)))) → U14_GA(X1, X2, X3, X4, splitcE_in_gaa(X4))
U14_GA(X1, X2, X3, X4, splitcE_out_gaa(X4, X6, X7)) → U16_GA(X1, X2, X3, X4, X6, mergesortcF_in_ga(.(X1, .(X3, X7))))
The remaining pairs can at least be oriented weakly.
Used ordering: Polynomial interpretation [POLO]:

POL(.(x1, x2)) = 1 + x2   
POL(0) = 1   
POL(MERGESORTF_IN_GA(x1)) = x1   
POL(U14_GA(x1, x2, x3, x4, x5)) = 1 + x5   
POL(U16_GA(x1, x2, x3, x4, x5, x6)) = 1 + x5   
POL(U21_gga(x1, x2, x3, x4, x5)) = 0   
POL(U22_gga(x1, x2, x3, x4, x5)) = 0   
POL(U23_gga(x1, x2, x3, x4, x5)) = 0   
POL(U24_gga(x1, x2, x3, x4, x5)) = 0   
POL(U25_gg(x1, x2, x3)) = 1   
POL(U26_gg(x1, x2, x3)) = 0   
POL(U27_gaa(x1, x2, x3)) = 1 + x3   
POL(U28_ga(x1, x2, x3)) = 0   
POL(U29_ga(x1, x2, x3, x4)) = 0   
POL(U30_ga(x1, x2, x3)) = 0   
POL(U31_ga(x1, x2, x3, x4, x5)) = 0   
POL(U32_ga(x1, x2, x3, x4, x5, x6)) = 0   
POL(U33_ga(x1, x2, x3, x4, x5, x6)) = 0   
POL(U34_ga(x1, x2, x3, x4, x5)) = 0   
POL([]) = 0   
POL(gtcD_in_gg(x1, x2)) = 0   
POL(gtcD_out_gg(x1, x2)) = 0   
POL(lecC_in_gg(x1, x2)) = 1 + x1   
POL(lecC_out_gg(x1, x2)) = 1   
POL(mergecB_in_gga(x1, x2)) = 0   
POL(mergecB_out_gga(x1, x2, x3)) = 0   
POL(mergesortcA_in_ga(x1)) = 0   
POL(mergesortcA_out_ga(x1, x2)) = 0   
POL(mergesortcF_in_ga(x1)) = 0   
POL(mergesortcF_out_ga(x1, x2)) = 0   
POL(s(x1)) = 1 + x1   
POL(splitcE_in_gaa(x1)) = 1 + x1   
POL(splitcE_out_gaa(x1, x2, x3)) = 1 + x2 + x3   

The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented:

splitcE_in_gaa([]) → splitcE_out_gaa([], [], [])
splitcE_in_gaa(.(X1, X2)) → U27_gaa(X1, X2, splitcE_in_gaa(X2))
U27_gaa(X1, X2, splitcE_out_gaa(X2, X4, X3)) → splitcE_out_gaa(.(X1, X2), .(X1, X3), X4)

(51) Obligation:

Q DP problem:
The TRS P consists of the following rules:

U14_GA(X1, X2, X3, X4, splitcE_out_gaa(X4, X6, X7)) → MERGESORTF_IN_GA(.(X1, .(X3, X7)))
U16_GA(X1, X2, X3, X4, X6, mergesortcF_out_ga(.(X1, .(X3, X7)), X8)) → MERGESORTF_IN_GA(.(X2, X6))

The TRS R consists of the following rules:

splitcE_in_gaa([]) → splitcE_out_gaa([], [], [])
splitcE_in_gaa(.(X1, X2)) → U27_gaa(X1, X2, splitcE_in_gaa(X2))
mergesortcF_in_ga(.(X1, .(X2, []))) → U28_ga(X1, X2, mergesortcA_in_ga(X1))
mergesortcF_in_ga(.(X1, .(X2, .(X3, X4)))) → U31_ga(X1, X2, X3, X4, splitcE_in_gaa(X4))
U27_gaa(X1, X2, splitcE_out_gaa(X2, X4, X3)) → splitcE_out_gaa(.(X1, X2), .(X1, X3), X4)
U28_ga(X1, X2, mergesortcA_out_ga(X1, X4)) → U29_ga(X1, X2, X4, mergesortcA_in_ga(X2))
U31_ga(X1, X2, X3, X4, splitcE_out_gaa(X4, X6, X7)) → U32_ga(X1, X2, X3, X4, X6, mergesortcF_in_ga(.(X1, .(X3, X7))))
mergesortcA_in_ga(X1) → mergesortcA_out_ga(X1, .(X1, []))
U29_ga(X1, X2, X4, mergesortcA_out_ga(X2, X5)) → U30_ga(X1, X2, mergecB_in_gga(X4, X5))
U32_ga(X1, X2, X3, X4, X6, mergesortcF_out_ga(.(X1, .(X3, X7)), X8)) → U33_ga(X1, X2, X3, X4, X8, mergesortcF_in_ga(.(X2, X6)))
U30_ga(X1, X2, mergecB_out_gga(X4, X5, X3)) → mergesortcF_out_ga(.(X1, .(X2, [])), X3)
U33_ga(X1, X2, X3, X4, X8, mergesortcF_out_ga(.(X2, X6), X9)) → U34_ga(X1, X2, X3, X4, mergecB_in_gga(X8, X9))
mergecB_in_gga(X1, []) → mergecB_out_gga(X1, [], X1)
mergecB_in_gga([], X1) → mergecB_out_gga([], X1, X1)
mergecB_in_gga(.(X1, X2), .(X3, X4)) → U21_gga(X1, X2, X3, X4, lecC_in_gg(X1, X3))
mergecB_in_gga(.(X1, X2), .(X3, X4)) → U23_gga(X1, X2, X3, X4, gtcD_in_gg(X1, X3))
mergesortcF_in_ga(.(X1, [])) → mergesortcF_out_ga(.(X1, []), .(X1, []))
U34_ga(X1, X2, X3, X4, mergecB_out_gga(X8, X9, X5)) → mergesortcF_out_ga(.(X1, .(X2, .(X3, X4))), X5)
U21_gga(X1, X2, X3, X4, lecC_out_gg(X1, X3)) → U22_gga(X1, X2, X3, X4, mergecB_in_gga(X2, .(X3, X4)))
U23_gga(X1, X2, X3, X4, gtcD_out_gg(X1, X3)) → U24_gga(X1, X2, X3, X4, mergecB_in_gga(.(X1, X2), X4))
lecC_in_gg(s(X1), s(X2)) → U25_gg(X1, X2, lecC_in_gg(X1, X2))
lecC_in_gg(0, s(X1)) → lecC_out_gg(0, s(X1))
lecC_in_gg(0, 0) → lecC_out_gg(0, 0)
U22_gga(X1, X2, X3, X4, mergecB_out_gga(X2, .(X3, X4), X5)) → mergecB_out_gga(.(X1, X2), .(X3, X4), .(X1, X5))
gtcD_in_gg(s(X1), s(X2)) → U26_gg(X1, X2, gtcD_in_gg(X1, X2))
gtcD_in_gg(s(X1), 0) → gtcD_out_gg(s(X1), 0)
U24_gga(X1, X2, X3, X4, mergecB_out_gga(.(X1, X2), X4, X5)) → mergecB_out_gga(.(X1, X2), .(X3, X4), .(X3, X5))
U25_gg(X1, X2, lecC_out_gg(X1, X2)) → lecC_out_gg(s(X1), s(X2))
U26_gg(X1, X2, gtcD_out_gg(X1, X2)) → gtcD_out_gg(s(X1), s(X2))

The set Q consists of the following terms:

splitcE_in_gaa(x0)
mergesortcF_in_ga(x0)
U27_gaa(x0, x1, x2)
U28_ga(x0, x1, x2)
U31_ga(x0, x1, x2, x3, x4)
mergesortcA_in_ga(x0)
U29_ga(x0, x1, x2, x3)
U32_ga(x0, x1, x2, x3, x4, x5)
U30_ga(x0, x1, x2)
U33_ga(x0, x1, x2, x3, x4, x5)
mergecB_in_gga(x0, x1)
U34_ga(x0, x1, x2, x3, x4)
U21_gga(x0, x1, x2, x3, x4)
U23_gga(x0, x1, x2, x3, x4)
lecC_in_gg(x0, x1)
U22_gga(x0, x1, x2, x3, x4)
gtcD_in_gg(x0, x1)
U24_gga(x0, x1, x2, x3, x4)
U25_gg(x0, x1, x2)
U26_gg(x0, x1, x2)

We have to consider all (P,Q,R)-chains.

(52) DependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 2 less nodes.

(53) TRUE